javascript调用百度地图通过ip定位 手机浏览器打开浏览不显示街道地址

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了javascript调用百度地图通过ip定位 手机浏览器打开浏览不显示街道地址相关的知识,希望对你有一定的参考价值。

javascript调用百度地图通过ip定位 手机上浏览不显示街道地址百度地图调用的是浏览器端的ak,在pc浏览器上显示正常;如图能显示多少号,同样页面放到手机浏览器打开,只能获取到地址下的 省、市,具体街道地址不显示,求解如何能在手机页面上地位到街道地址

这样的情况个人建议用安全卫士全面体检修复,然后重新操作,这样就可以解决。 参考技术A 这个问题解决了吗我也碰到了这个问题

百度地图API的IP定位城市和浏览器定位(转)

转自博文:百度地图API的IP定位城市和浏览器定位 http://blog.csdn.net/suixufeng/article/details/13511761

百度地图API提供了Geolocation 和 LocalCity两个服务类。

这俩API可以分别供用户在JavaScript中进行定位和城市确认。

1 本质上,Geolocation这个类是使用了支持HTML5浏览器提供的Geolocation API 来进行定位的。目前Internet Explorer 9、Firefox、Chrome、Safari 以及 Opera 支持地理定位(因为他们支持HTML5)。

2 本质上,LocalCity这个类是利用用户IP地址去百度数据库里查询得到IP所在的城市。

关于第一点的原理,在此解释下:在支持HTML5的浏览器下,navigator对象下有一个属性----geolocation,而 geolocation属性又有个方法getCurrentPosition(回调函数1,回调函数2)可以通过浏览器向设备发起定位请求,浏览器就会让 设备发送相关指令到附近上网设备,上网设备返回定位信息给用户设备,浏览器就获得了用户位置。

当浏览器获得定位信息成功,则navigator.geolocation.getCurrentPosition(回调函数1,回调函数2); 中的回调函数1执行,如果定位失败,则回调函数2执行。  

若定位成功,则自动把定位结果对象作为参数传递给回调函数1,。 若定位失败,则自动把错误对象传递给回调函数2.  所以在回调函数2中可通过error.code 获取到错误码。(假设形参名为error)。

如下代码就是用HTML5获取定位信息,并把成功定位交给showPosition处理,把错误定位交给showError处理。

function getLocation(){

    if (navigator.geolocation){

    navigator.geolocation.getCurrentPosition(showPosition,showError);

    }else{

  x.innerHTML="Geolocation is not supported by this browser.";} //浏览器不支持HTML5.

  }

 

注意:百度地图提供的API使用起来与HTML5原生的定位代码是不同的。

下面是百度定位代码:

<script type="text/javascript">

var map = new BMap.Map("allmap");

var point = new BMap.Point(116.331398,39.897445);

map.centerAndZoom(point,12);

 

var geolocation = new BMap.Geolocation();  //实例化浏览器定位对象。

 //下面是getCurrentPosition方法。调用该对象的 getCurrentPosition(),与HTML5不同的是,这个方法原型是 getCurrentPosition(callback:function[, options: PositionOptions]),也就是说无论成功与否都执行回调函数1,第二个参数是关于位置的选项。 因此能否定位成功需要在回调函数1中自己判断。

geolocation.getCurrentPosition(function(r){   //定位结果对象会传递给r变量

    if(this.getStatus() == BMAP_STATUS_SUCCESS){  //通过Geolocation类的getStatus()可以判断是否成功定位。

        var mk = new BMap.Marker(r.point);    //基于定位的这个点的点位创建marker

        map.addOverlay(mk);    //将marker作为覆盖物添加到map地图上

        map.panTo(r.point);   //将地图中心点移动到定位的这个点位置。注意是r.point而不是r对象。

        alert(‘您的位置:‘+r.point.lng+‘,‘+r.point.lat);  //r对象的point属性也是一个对象,这个对象的lng属性表示经度,lat属性表示纬度。

    } else {

        alert(‘failed‘+this.getStatus());

    }        

},{enableHighAccuracy: true})

//关于状态码

//BMAP_STATUS_SUCCESS 检索成功。对应数值“0”。

//BMAP_STATUS_CITY_LIST 城市列表。对应数值“1”。

//BMAP_STATUS_UNKNOWN_LOCATION 位置结果未知。对应数值“2”。

//BMAP_STATUS_UNKNOWN_ROUTE 导航结果未知。对应数值“3”。

//BMAP_STATUS_INVALID_KEY 非法密钥。对应数值“4”。

//BMAP_STATUS_INVALID_REQUEST 非法请求。对应数值“5”。

//BMAP_STATUS_PERMISSION_DENIED 没有权限。对应数值“6”。(自 1.1 新增)

//BMAP_STATUS_SERVICE_UNAVAILABLE 服务不可用。对应数值“7”。(自 1.1 新增)

//BMAP_STATUS_TIMEOUT 超时。对应数值“8”。(自 1.1 新增)

</script>


IP定位获取城市信息就简单了,如下:

<script type="text/javascript">

var map = new BMap.Map("allmap");

var point = new BMap.Point(116.331398,39.897445);

map.centerAndZoom(point,12);

function myFun(result){

    var cityName = result.name;

    map.setCenter(cityName);   //关于setCenter()可参考API文档---”传送门

    alert(cityName);

}

var myCity = new BMap.LocalCity();

myCity.get(myFun);   //创建一个LocalCity对象myCity,然后调用其get()方法,就得到了用户IP对应的城市。该城市结果会以参数形式传递给回调函数myFun。接下来就是myFun(结果城市result)来执行了----即上文红色代码。

</script>


以上是关于javascript调用百度地图通过ip定位 手机浏览器打开浏览不显示街道地址的主要内容,如果未能解决你的问题,请参考以下文章

百度地图怎样用手机定位

ReactNative 调用手机地图(高德百度)导航 Android

PHP利用百度地图API进行IP定位和GPS定位

百度地图API的IP定位城市和浏览器定位(转)

android 版百度地图如何通过定位功能获得当前的位置所在的城市?

百度地图API 怎么根据输入城市自动定位到该城市中心地点呢