在现代社会中,经纬度已经成为了许多业务领域的必备项,而在WebGIS开发中,实现经纬度的获取更是必不可少。 百度地图作为开发中常用的底图服务之一,提供了多种经纬度获取方式。下面将对百度地图的经纬度获取做出详细介绍。
一、通过地图点击获取经纬度
在百度地图中,我们可以通过地图点击的方式获取经纬度信息。
var map = new BMap.Map("map-container");
map.centerAndZoom(new BMap.Point(116.404, 39.915), 11);
map.addEventListener("click", function(e){
alert(e.point.lng + ", " + e.point.lat);
});
上述代码中,通过Map实例化对象的addEventListener()方法对地图元素绑定单击事件,这样我们就可以获取到鼠标单击的坐标,通过e.point.lng和e.point.lat获取经纬度信息。
二、通过IP地址获取经纬度
如果用户不允许或者无法获取其位置信息时,我们可以通过IP地址获取其所在位置的经纬度信息。这需要引入第三方库,比如ip定位API提供商如新浪、搜狐、百度等。
//引入ip定位库
<script type="text/javascript" src="http://api.map.baidu.com/location/ip.js"></script>
//获取IP地址定位
var myCity = new BMap.LocalCity();
myCity.get(function(result){
var cityName = result.name;
var myGeo = new BMap.Geocoder();
myGeo.getPoint(cityName, function(point){
alert(point.lng + ", " + point.lat);
});
});
上述代码中,我们使用BMap.LocalCity()方法获取所在城市的名称,然后通过BMap.Geocoder()方法获取该城市的坐标位置,从而获取经纬度信息。
三、通过地址获取经纬度
在某些情况下,我们已经了解用户的地址信息,需要通过这些地址信息获取对应的经纬度信息。这时我们可以通过百度地图提供的地址解析功能来实现。
//引入地址解析库
<script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=您的密钥"></script>
//获取地址经纬度
var myGeo = new BMap.Geocoder();
myGeo.getPoint("北京市海淀区上地10街", function(point){
alert(point.lng + ", " + point.lat);
});
上述代码中,我们使用BMap.Geocoder()方法获取地址的经纬度信息。
四、通过GPS获取经纬度
在移动端开发中,我们可以通过GPS获取用户的经纬度信息。
//引入GPS定位库
<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);
}
else {
alert('failed'+this.getStatus());
}
});
上述代码中,我们使用BMap.Geolocation()方法获取GPS的定位信息,通过getCurrentPosition()方法获取坐标信息。
总结
本文详细介绍了百度地图获取经纬度的各种方法。无论是通过地图点击、IP地址、地址或者GPS信息,我们都可以方便地获取到对应的坐标信息。同时,在开发WebGIS时,我们也可以根据业务需要,选择其中的某一种方式获取对应的坐标,以实现定位等功能。