1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > 百度IP定位和百度地图API定位

百度IP定位和百度地图API定位

时间:2020-12-21 11:29:28

相关推荐

百度IP定位和百度地图API定位

百度IP定位和百度地图API定位

在这里根据你所获得ip,来确定这个ip的大体位置

[java]view plaincopy<spanstyle="font-size:14px;">packagecom.soufun.wap.action; importjava.io.BufferedReader; importjava.io.IOException; importjava.io.InputStream; importjava.io.InputStreamReader; importjava.io.Reader; .URL; importjava.nio.charset.Charset; importatg.taglib.json.util.JSONException; importatg.taglib.json.util.JSONObject; /** *java根据url获取json对象 *@authoropenks *@since-7-16 *需要添加java-json.jar才能运行 */ publicclassTestIPLocation{ privatestaticStringreadAll(Readerrd)throwsIOException{ StringBuildersb=newStringBuilder(); intcp; while((cp=rd.read())!=-1){ sb.append((char)cp); } returnsb.toString(); } publicstaticJSONObjectreadJsonFromUrl(Stringurl)throwsIOException,JSONException{ InputStreamis=newURL(url).openStream(); try{ BufferedReaderrd=newBufferedReader(newInputStreamReader(is,Charset.forName("UTF-8"))); StringjsonText=readAll(rd); JSONObjectjson=newJSONObject(jsonText); returnjson; }finally{ is.close(); //System.out.println("同时从这里也能看出即便return了,仍然会执行finally的!"); } } publicstaticvoidmain(String[]args)throwsIOException,JSONException{ //这里调用百度的ip定位api服务详见http://api./lbsapi/cloud/ip-location-api.htm Stringip="113.57.244.100"; Stringurl="http://api./location/ip?ak=32f38c9491f2da9eb61106aaab1e9739&ip="+ip+"&coor=bd09ll"; //Stringurl="http://api./location/ip?ak=F454f8a5efe5e577997931cc01de3974&ip=139.214.253.85&coor=bd09ll" JSONObjectjson=readJsonFromUrl(url); System.out.println(json.toString()); System.out.println("经度:"+((JSONObject)json.get("content")).getJSONObject("point").get("x")); System.out.println("维度:"+((JSONObject)json.get("content")).getJSONObject("point").get("y")); Stringcity=(String)((JSONObject)json.get("content")).getJSONObject("address_detail").get("city"); city=city.replace("市",""); System.out.println(city); } }</span>

输出的结果是

{"address":"CN|湖北|武汉|None|UNICOM|0|0","content":{"address":"湖北省武汉市","address_detail":{"city":"武汉市","city_code":218,"district":"","province":"湖北省","street":"","street_number":""},"point":{"x":"114.31620010","y":"30.58108413"}},"status":0}

经度:114.31620010

维度:30.58108413

武汉

ip定位职能获取到你的大体位置,它获取到的经纬度不太准确。而且还有一个问题就是如果你的手机号是武汉的,你在北京,它获取到的ip就是武汉的,这个我也不知道是什么原因。

前端定位

前端定位的话比较好的有两个,一个是html5的geolocation,这个在我的上一篇博客里有介绍。用它有个缺陷,就是ios可以比较精确的获取到经纬度,但安卓定位的时候总是报连接超时错误。这是因为有部分安卓将谷歌的GMS服务包给“阉割”了,导致定位不准。另一个就是百度的BMap.Geolocation,这个在ios上也是定位比较准,但在安卓上有的手机定位比较准(三星),有的不太准(小米),但一般都是可以定位的

百度前端定位代码

[java]view plaincopy<%@pagelanguage="java"contentType="text/html;charset=gbk" pageEncoding="gbk"%> <!DOCTYPEhtmlPUBLIC"-//W3C//DTDHTML4.01Transitional//EN""/TR/html4/loose.dtd"> <html> <head> <metahttp-equiv="Content-Type"content="text/html;charset=ISO-8859-1"> <title>Inserttitlehere</title> <script src="/common_m/m_public/jslib/jquery/2.1.1/jquery.js"></script> <scripttype="text/javascript"src="http://api./api?v=1.3"></script> <scripttype="text/javascript"src="http://api./api?v=2.0&ak=32f38c9491f2da9eb61106aaab1e9739"></script> </head> <body> <scripttype="text/javascript"> vargeolocation=newBMap.Geolocation(); geolocation.getCurrentPosition(function(r){ if(this.getStatus()==BMAP_STATUS_SUCCESS){ varmk=newBMap.Marker(r.point); //alert('您的位置:'+r.point.lng+','+r.point.lat); varmyGeo=newBMap.Geocoder(); alert('您的位置:'+r.point.lng+','+r.point.lat); myGeo.getLocation(newBMap.Point(r.point.lng,r.point.lat), function(rs){ varaddComp=rs.addressComponents; alert(addComp.province+addComp.city +addComp.district+addComp.street +addComp.streetNumber); }); }else{ alert('failed'+this.getStatus()); } }); </script> </body> </html>

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