簡體   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