admin 发表于 2014-7-8 21:49:15

phonegap利用百度地图实现定位

我们都知道无论用原生开发的程序,还是用phoengap调用原生接口开发的程序,实现定位的时候总是不理想,下面给大家分享一个利用百度地图定位的方法

phonegap利用百度地图定位

1.http://developer.baidu.com/map/jsdemo.htm打开这个网址

2.找到服务示例-定位服务 -浏览器订单如下图



也可以获取代码一下他的示例代码:


最后核心代码如下

<script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=您的密钥"></script>

var geolocation = new BMap.Geolocation();
geolocation.getCurrentPosition(function(r){
    if(this.getStatus() == BMAP_STATUS_SUCCESS){
      
       // alert('您的位置:'+r.point.lng+','+r.point.lat);
   
   
    var longitude=r.point.lng;//经度
    var latitude=r.point.lat; //纬度
      
      
      
    }
    else {//失败的回调函数      
    //错误回调   
      
    //alert('failed'+this.getStatus());
    }      
},{enableHighAccuracy: true});

wyz191 发表于 2014-7-9 15:32:05

通过这种方式获取的经纬度信息,偏差太大了

admin 发表于 2014-7-20 11:07:17

wyz191 发表于 2014-7-9 15:32
通过这种方式获取的经纬度信息,偏差太大了

还可以以吧,原生也有偏差,感觉自己的设备好的话可以用原生

十年站长 发表于 2014-7-21 10:31:27

不错不错

wyz191 发表于 2014-7-22 08:30:20

嗯,获取经纬度后需要再转换一下才可以

wyz191 发表于 2014-7-22 08:33:31

本帖最后由 wyz191 于 2014-7-22 08:36 编辑

<script type="text/javascript">
document.addEventListener('deviceready',onDeviceReady,false);
function onDeviceReady(){
    getLocation();
}
function getLocation()
{
    try{
      if(navigator.geolocation){
            navigator.geolocation.getCurrentPosition(showMap, handleError, {enableHighAccuracy:true, maximumAge: 3000, timeout: 5000});
      }else{
            alert("您的浏览器不支持使用HTML 5来获取地理位置服务");
      }
    }catch(err){
      alert(err);
    }
}

function showMap(value){//地图初始化

    try{
      var longitude = value.coords.longitude;
      var latitude = value.coords.latitude;
      
      alert('GPS : '+longitude+" -- "+latitude);

      var map = new BMap.Map("map");
      var point = new BMap.Point(longitude, latitude);    // 创建点坐标
      map.centerAndZoom(point, 15);
      var labelgps = new BMap.Label("我是GPS标注哦",{offset:new BMap.Size(20,-10)});
      var marker = new BMap.Marker(new BMap.Point(longitude, latitude));// 创建标注
      marker.setLabel(labelgps); //添加GPS标注
      map.addOverlay(marker);
      map.addControl(new BMap.NavigationControl());
      //坐标转换完之后的回调函数
      translateCallback = function (point){
            var marker = new BMap.Marker(point);
            map.addOverlay(marker);
            var label = new BMap.Label("我是百度标注哦",{offset:new BMap.Size(20,-10)});
            marker.setLabel(label); //添加百度label
            map.setCenter(point);
            alert(point.lng + "," + point.lat);
            var myGeo = new BMap.Geocoder();
            // 根据坐标得到地址描述
            myGeo.getLocation(point, function(result){
                              if (result){
                              var province = result.addressComponents.province ;
                              var city = result.addressComponents.city;
                              var district = result.addressComponents.district ;
                              var street = result.addressComponents.street ;
                              var streetNumber = result.addressComponents.streetNumber ;
                              alert(province + ' - ' +city + ' - ' +district+ ' - ' +street + ' - ' + streetNumber);
                              }
                              });
      }

      setTimeout(function(){
                   BMap.Convertor.translate(point,0,translateCallback);   //真实经纬度转成百度坐标
                   }, 2000);
    }catch(err){
      alert(err);
    }
}
function handleError(value)
{
    alert('handleError:'+value);
    switch(value.code){
      case 1:
      console.log("位置服务被拒绝");
      break;
      case 2:
      console.log("暂时获取不到位置信息");
      break;
      case 3:
      console.log("获取信息超时");
      break;
      case 4:
      alert("未知错误");
      console.log("未知错误");
      break;
    }
}
</script>


admin 发表于 2014-10-16 19:02:26

wyz191 发表于 2014-7-22 08:33


{:4_86:}
页: [1]
查看完整版本: phonegap利用百度地图实现定位