您的位置:

高德地图拾取坐标的使用详解

高德地图是一种用于展示地理信息的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,实现更加复杂的地理信息展示和查询功能。