高德地图是一种用于展示地理信息的Web服务,拾取坐标是其中最常用的功能之一,本文将从以下几个方面对高德地图拾取坐标进行详细阐述。
一、坐标拾取的基本介绍
坐标拾取是指在高德地图上选择一个地点,并获取该地点的经纬度坐标。在使用高德地图进行地理信息展示和查询时,经常需要获取地点的经纬度坐标,这时坐标拾取功能就起到了重要的作用。
实现方式可以通过在API中添加坐标拾取的功能,或通过在地图上点击鼠标获取经纬度坐标。
var map = new AMap.Map('container',{
zoom:10,
center:[116.39,39.9]
});
AMap.event.addListener(map,'click',function(e){
var lnglat = [e.lnglat.getLng(),e.lnglat.getLat()];
alert(lnglat);
});
上述代码中,通过添加地图的点击事件,当用户在地图上点击时,就会弹出经纬度坐标信息。
二、拾取坐标的应用场景
坐标拾取广泛应用于各种Web地图应用程序中,包括地理信息查询、位置检索、路径规划、地图可视化、LBS应用等。
例如,在开发某LBS应用时,需要获取周边的餐馆信息。此时可在高德地图上选定当前位置,获取经纬度坐标,并基于该坐标进行周边搜索,从而获取周边餐馆的信息。
var map = new AMap.Map('container',{
zoom:10,
center:[116.39,39.9]
});
AMap.event.addListener(map,'click',function(e){
var lnglat = [e.lnglat.getLng(),e.lnglat.getLat()];
map.clearMap();
new AMap.Marker({
position:new AMap.LngLat(lnglat[0],lnglat[1])
map:map
});
map.setFitView();
//发起周边搜索
AMap.service(['AMap.PlaceSearch'],function(){
var placeSearch = new AMap.PlaceSearch({
pageSize:5,
pageIndex:1,
map:map
});
//查询周边餐馆
placeSearch.searchNearBy("餐馆",new AMap.LngLat(lnglat[0],lnglat[1]),1000,function(status,result){
if (status === 'complete' && result.info === 'OK') {
//显示周边餐馆信息
}else{
//未找到餐馆
}
});
});
});
以上代码中,当用户点击地图时,会在地图上添加一个Marker并发起周边餐馆信息搜索。
三、坐标拾取与反地理编码
反地理编码指的是将经纬度坐标转换成可供人类读取的地址信息。在使用高德地图进行应用开发时,坐标拾取和反地理编码往往是相结合的应用场景。
var map = new AMap.Map('container',{
zoom:10,
center:[116.39,39.9]
});
AMap.event.addListener(map,'click',function(e){
var lnglat = [e.lnglat.getLng(),e.lnglat.getLat()];
//通过经纬度逆编码获取地址信息
var geocoder = new AMap.Geocoder({
radius: 1000,
extensions:"all"
});
geocoder.getAddress(lnglat,function(status,result){
if (status === 'complete' && result.info === 'OK') {
if(result.regeocode){
//显示地址信息
}
}else{
//未获取到地址信息
}
});
});
以上代码中,当用户在地图上点击时,会获取经纬度坐标并将其反向编码,从而获取到该坐标的地址信息。
四、坐标拾取与路径规划
路径规划指的是在地图上根据起点和终点位置,计算出最短的路径规划方案。在实际应用中,常常需要获取用户当前的位置作为路径规划的起点,这时可通过坐标拾取的方式获取用户当前位置的经纬度坐标。
var map = new AMap.Map('container',{
zoom:10,
center:[116.39,39.9]
});
var startMarker, endMarker;
var start,end;
var driving = new AMap.Driving();
AMap.event.addListener(map,'click',function(e){
//设置起点位置
if(!startMarker){
startMarker = new AMap.Marker({
position:e.lnglat,
map:map
});
start = e.lnglat;
}
//设置终点位置
else if(!endMarker){
endMarker = new AMap.Marker({
position:e.lnglat,
map:map
});
end = e.lnglat;
//发起路线规划
driving.search(start,end);
}
//清除所有坐标点
else{
map.clearMap();
startMarker = endMarker = null;
driving.clearResults();
}
});
//监听路线规划完成事件
AMap.event.addListener(driving,"complete",function(result){
//展示路线规划
});
以上代码中,当用户在地图上点击时,会根据点击顺序获取起点和终点位置,并通过路径规划API计算出最短路线。
五、总结
本文对高德地图的坐标拾取功能进行了详细的介绍,从拾取的基本介绍到应用场景的实际应用,让大家能够更好地理解和掌握该功能的使用方法。在具体应用中,可以根据实际需求,结合其他高德地图API,实现更加复杂的地理信息展示和查询功能。