繁体   English   中英

Google反向地理编码可从经纬度获取地址

[英]Google reverse Geo Coding to get address from latitude and longitude

我的字符串格式为">RPV21305+1134038+7772277800000012;ID=0011<"我正在按以下代码">RPV21305+1134038+7772277800000012;ID=0011<"纬度和经度。 但是我无法从Google API通过纬度和经度访问地址。 我的程序需要反向地理编码。

我的程序是

import java.io.*;
import java.net.*;
import java.util.*;
import java.sql.*;
import java.sql.Statement;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.text.SimpleDateFormat;

public class FileHandler {
    public static void main(String [] args) {
        //reading a file for iput
        String fileName = "File1/ascii_file";
        String line = null;
        try {
            FileReader fileReader = new FileReader(fileName);
            BufferedReader bufferedReader = new BufferedReader(fileReader);
            while((line = bufferedReader.readLine()) != null) {
                System.out.println(line);
                int se = line.endsWith("<")? (line.length() - 1) : line.length();
                System.out.println("se-----------------------------"+se);
                String parsedstring = line.substring(1,se);
                System.out.println("parsedString"+parsedstring);
                String T[] = parsedstring.split(";");
                System.out.println("ttttt-----------------------------"+T[0]);
                String mobileID = null;
                for (int i = 1; i < T.length; i++) {
                    if (T[i].startsWith("ID=")) {
                        mobileID = T[i].substring(3);
                        System.out.println("mobileID-----------------"+mobileID);
                        break;
                    }
                }

                //getting lattitude and longitude from string;
                int    gpsTOD     = Integer.parseInt(T[0].substring(
                float latitude   = Float.parseFloat(T[0].substring( 8
                float lat        =latitude/100000;
                float longitude  = Float.parseFloat(T[0].substring(16,25));
                float lon           =longitude/1000000;
                float speedKPH   = Float.parseFloat(T[0].substring(25,28));
                float headingDeg = Float.parseFloat(T[0].substring(28,31));
                String srcStr     = T[0].substring(31,32);
                String ageStr     = T[0].substring(32,33);
                double altitudeM  = 0.0;
                double odomKM     = 0.0;
                long   gpioInput  = 0L;
                String accountID  ="demo";
                String status     ="0";
                System.out.println("gpstod:"+gpsTOD);
                System.out.println("lat:"+lat);
                System.out.println("lon:"+lon);
                System.out.println("speedKPH:"+speedKPH);
                System.out.println("headingDeg:"+headingDeg);
                System.out.println("srcStr:"+srcStr);
                System.out.println("ageStr:"+ageStr);
                System.out.println("altitudeM:"+altitudeM);
                System.out.println("odomKM:"+odomKM);
                System.out.println("gpioInput:"+gpioInput);
                try {
                    Class.forName("com.mysql.jdbc.Driver");
                    Connection con=DriverManager.getConnection("jdbc:mysql://localhost:3306/gts","gts","opengts");
                    Statement stmt=con.createStatement();
                    stmt.executeUpdate("insert into EventData(accountID,deviceID,timestamp,statusCode,latitude,longitude,gpsAge,speedKPH,heading,altitude,odometerKM)values('"+ accountID +"','"+ mobileID +"','"+ gpsTOD +"','"+ status +"','"+ lat +"','"+ lon +"','"+ ageStr +"','"+ speedKPH +"','"+ headingDeg +"','"+ altitudeM +"','"+ odomKM +"')");
                    System.out.println("insert into EventData(accountID,deviceID,timestamp,latitude,longitude,gpsAge,speedKPH,heading,altitude,odometerKM)values('"+ accountID +"','"+ mobileID +"','"+ gpsTOD+"','"+ lat +"','"+ lon +"','"+ ageStr +"','"+ speedKPH +"','"+ headingDeg +"','"+ altitudeM +"','"+ odomKM +"')");
                    con.close();
                }
                catch (Exception e) {
                    System.out.println(e);
                }
            }
            bufferedReader.close();
        }
        catch(FileNotFoundException ex) {
            System.out.println("Unable to open file '" + fileName + "'");
        }
        catch(IOException ex) {
            System.out.println("Error reading file '" + fileName + "'");
        }
    }
}

您将在代码中需要像这样的东西

GeoApiContext gtx = new GeoApiContext().setApiKey("**<<<<your-key-here>>>>**");
try {
    GeocodingResult[] gResp = GeocodingApi.newRequest(gtx).latlng(new LatLng(37, -121)).await();
    System.out.println(gResp[0].formattedAddress);
} catch (Exception e) {
    // TODO Auto-generated catch block
    e.printStackTrace();

另外,请确保已从控制台启用了Google API,并且您拥有密钥。 有了这两个,您应该获得如下所示的输出

信息:请求: https ://maps.googleapis.com/maps/api/geocode/json ? key = your-key &latlng = 37.38000000%2C-121.88000000 1685 Lederer Cir,San Jose,CA 95131,USA

在地址解析API的下面是http请求,因此如果您愿意,也可以直接尝试

像下面这样的东西也应该工作

https://maps.googleapis.com/maps/api/geocode/json?latlng=23,82.5

如果您使用的是Java代码,请在对jar的注释中添加以下依赖项

<dependency>
    <groupId>com.google.maps</groupId>
    <artifactId>google-maps-services</artifactId>
    <version>0.1.15</version> 
</dependency>

这几乎吸引了以下进口

import com.google.maps.GeoApiContext;
import com.google.maps.GeocodingApi;
import com.google.maps.GeocodingApiRequest;
import com.google.maps.model.GeocodingResult;
import com.google.maps.model.LatLng;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM