如何在 Java 中使用谷歌地理编码?
Posted
技术标签:
【中文标题】如何在 Java 中使用谷歌地理编码?【英文标题】:how to use google Geocoding in java? 【发布时间】:2012-09-23 05:38:56 【问题描述】:我正在为我的项目开发一项功能,当用户输入“邮政编码”时,应显示相应“邮政编码”的坐标(纬度、经度)。实施平台是'JAVA'。
我用谷歌搜索了 java api,但没有找到任何特定的资源。
任何建议都将不胜感激
【问题讨论】:
【参考方案1】:这方面的文档对新用户不友好。对我来说,Java 文档效果最好,尽管它们非常严格:https://www.javadoc.io/doc/com.google.maps/google-maps-services/latest/com/google/maps/GeocodingApiRequest.html
以下是使用最新的 Google 地理编码 API 的方法:
//use your google api key to create a GeoApiContext instance
GeoApiContext context = new GeoApiContext.Builder().apiKey("xxxxxx").build();
//this will get geolocation details via zip
GeocodingResult[]results = GeocodingApi.newRequest(context).components(ComponentFiler.postalCode("75002")).await();
System.out.println(results[0]);
//this will get geolocation details via address
GeocodingResult[] results2 = GeocodingApi.geocode(context, "One Apple Park Way Cupertino, CA 95014").await();
System.out.println(results2[0]);
//another way to get geolocation details via address
GeocodingResult[] results3 = GeocodingApi.newRequest(context).address("One Apple Park Way Cupertino, CA 95014").await();
System.out.println(results3[0]);
//geolocation details via lat lng
GeocodingResult[] results4 = GeocodingApi.newRequest(context).latlng(latLng).await();
System.out.println(results4[0]);
从那里您将在结果数组中的返回位置上获得一堆数据,您可以根据需要对其进行解析,以提取您选择的数据。继承人的数据是什么样子的前....
[GeocodingResult placeId=ChIJyTSQVXm0j4ARmdUQoA1BpwQ [Geometry: 37.31317000,-122.07238160 (APPROXIMATE) bounds=[37.34159500,-121.99557710, 37.24799500,-122.14382300], viewport=[37.34159500,-121.99557710, 37.24799500,-122.14382300]], formattedAddress=MONTE VISTA, CA 95014, USA, types=[postal_code], addressComponents=[[AddressComponent: "95014" ("95014") (postal_code)], [AddressComponent: "MONTE VISTA" ("MONTE VISTA") (locality, political)], [AddressComponent: "Santa Clara County" ("Santa Clara County") (administrative_area_level_2, political)], [AddressComponent: "California" ("CA") (administrative_area_level_1, political)], [AddressComponent: "United States" ("US") (country, political)]], postcodeLocalities=[Cupertino, MONTE VISTA, Permanente]]
【讨论】:
【参考方案2】:这是一种方法(包括源代码): http://halexv.blogspot.mx/2015/07/java-geocoding-using-google-maps-api.html
该博客解释了如何在没有 API_KEY 的情况下执行此操作,以及一种将位置过滤为最可能的位置的方法。
试一试。
【讨论】:
【参考方案3】:您也可以(现在)查看用于地理编码、方向、距离矩阵、高程和时区的开源 Java 客户端库:https://github.com/googlemaps/google-maps-services-java
【讨论】:
【参考方案4】:这很简单。例如。看看this class的地理编码方法。将您的邮政编码(以及国家/地区)传递给该方法,您应该没问题。 (GLatLng 类可以在here 找到,但应该由您根据需要替换。)
[编辑] 我刚刚看到这个例子仍然使用Google Maps v2,但是将它转换为v3应该是轻而易举的事。 在链接的文件中,您还可以找到有关使用此服务的限制(“使用限制”段落)
【讨论】:
非常感谢您的回答,要测试结果,我需要任何许可表格“Google”吗? 会四处走动并说以“它非常直接”开始你的答案不是最好的方法【参考方案5】:您可以尝试为Google geocoding API RESTful Web 服务编写一个 REST 客户端(例如使用 Apache HttpClient)。
【讨论】:
以上是关于如何在 Java 中使用谷歌地理编码?的主要内容,如果未能解决你的问题,请参考以下文章