谷歌反向Geo Coding从纬度和经度获取地址

时间:2016-09-22 07:54:01

标签: java geocoding

我的字符串格式为">RPV21305+1134038+7772277800000012;ID=0011<" 我正在分割纬度和经度,如下面的代码所示。但我无法从谷歌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 + "'");
        }
    }
}

1 个答案:

答案 0 :(得分:1)

你需要在代码

中使用这样的东西
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= 您的密钥&amp; 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;