1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > Java 调用Google Map Api解析地址 解析经纬度实例

Java 调用Google Map Api解析地址 解析经纬度实例

时间:2022-12-17 12:28:01

相关推荐

Java 调用Google Map Api解析地址 解析经纬度实例

Java 调用Google Map Api解析地址,解析经纬度实例

使用google地图的反向地址解析功能,提供一个经纬度得到对应地址,或者给出模糊地址,得到经纬度,放在java后台代码中处理,这个使用的是Google的地理编码服务。一般而言数据量不大的情况使用是不限制的。按照Google官方说法是连续90天请求地理编码服务次数超过2000次就会受到限制,因此可以将这些解析好的地址放在Database中,这样可以避免重复请求同一个地址。

JAVA Code:

/** System Abbrev :* system Name :* Component No :* Component Name:* File name:GoogleGeocoderUtil.java* Author :Peter.Qiu* Date:-9-18* Description : <description>*//* Updation record 1:* Updation date : -9-18* Updator: Peter.Qiu* Trace No: <Trace No>* Updation No: <Updation No>* Updation Content: <List all contents of updation and all methods updated.>*/package com.qiuzhping.google;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import .HttpURLConnection;import .MalformedURLException;import .URL;import .URLEncoder;import net.sf.json.JSONObject;import org.apache.log4j.Logger;import com.qiuzhping.google.beans.GoogleGeocodeJSONBean;/*** <Description functions in a word>* type :1-->address 2-->latlng* <Detail description>* * @author Peter.Qiu* @version [Version NO, -9-18]* @see [Related classes/methods]* @since [product/module version]*/public final class GoogleGeocoderUtil {public static final int ADDRESS = 1;public static final int LATLNG = 2;private final String GOOGLEAPIURL="/maps/api/geocode/json?language=en&sensor=true";private Logger log = Logger.getLogger(GoogleGeocoderUtil.class.getName());private int type ;//1-->address 2-->latlngpublic int getType() {return type;}public void setType(int type) {this.type = type;}private static GoogleGeocoderUtil instance;public static GoogleGeocoderUtil getInstance() {if(instance == null){instance = new GoogleGeocoderUtil();}return instance;}/** <Description functions in a word>* -9-18* <Detail description>* @author Peter.Qiu* @param address * @return* @return GoogleGeocodeJSONBean [Return type description]* @throws Exception * @exception throws [Exception] [Exception description]* @see [Related classes#Related methods#Related properties]*/public GoogleGeocodeJSONBean geocodeByAddress(String address) throws Exception{if(address == null || address.equals("")){return null;}log.info("geocode By Address : "+address);log.info("Start geocode");GoogleGeocodeJSONBean bean = null;BufferedReader in= null;HttpURLConnection httpConn = null;try {log.info("Start open url");String urlPath = GOOGLEAPIURL+"&address="+URLEncoder.encode(address,"UTF-8");;if(this.getType() == LATLNG){urlPath = GOOGLEAPIURL+"&latlng="+address;}log.info("url : "+urlPath);URL url = new URL(urlPath);httpConn = (HttpURLConnection) url.openConnection(); log.info("End open url");httpConn.setDoInput(true); in = new BufferedReader(new InputStreamReader(httpConn.getInputStream(),"UTF-8")); String line;String result="";while ((line = in.readLine()) != null) { result += line; } in.close();//httpConn.disconnect();JSONObject jsonObject = JSONObject.fromObject( result );bean = (GoogleGeocodeJSONBean) JSONObject.toBean( jsonObject, GoogleGeocodeJSONBean.class );if(bean != null && bean.status.equalsIgnoreCase("ok") && bean.results != null && bean.results[0].geometry.getLocation() != null){log.info("Start display Geocode info");log.info("Formatted Address :" + bean.results[0].getFormatted_address());log.info("geometry Location : " + bean.results[0].geometry.getLocation().getLat() + ","+bean.results[0].geometry.getLocation().getLng());log.info("End display Geocode info");}log.info("End geocode");return bean;} catch (MalformedURLException e) {log.error(e);throw e;} catch (IOException e) {log.error(e);throw e;} finally {if (in != null) {try {in.close();} catch (IOException e) {log.error(e);throw e;}}if (httpConn != null) {httpConn.disconnect();}}}public String getGoogleLongitudeDimensions(GoogleGeocodeJSONBean googleBean) throws IOException{if (googleBean != null && googleBean.status.equalsIgnoreCase("ok")&& googleBean.results[0] != null&& googleBean.results[0].formatted_address != null&& googleBean.results[0].getGeometry().location != null&& googleBean.results[0].getGeometry().location.getLat() != null&& googleBean.results[0].getGeometry().location.getLng() != null) {String formatted_Address = googleBean.results[0].formatted_address;String location = googleBean.results[0].getGeometry().location.getLat()+","+googleBean.results[0].getGeometry().location.getLng();return formatted_Address.trim()+"|"+location;}return null;}/** <Description functions in a word>* -9-18* <Detail description>* @author Peter.Qiu* @param args [Parameters description]* @return void [Return type description]* @throws Exception * @exception throws [Exception] [Exception description]* @see [Related classes#Related methods#Related properties]*/public static void main(String[] args) throws Exception {try {getInstance().setType(2);GoogleGeocodeJSONBean bean = getInstance().geocodeByAddress("39.90403,116.407526");} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}

完整的Demo:Java 调用Google Map Api解析地址,解析经纬度实例

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。