zoukankan      html  css  js  c++  java
  • 高德地图jsAPI,定位和选择位置

    一、前端页面

     
    #container {
             700px;
            height: 311px;
        }
    
    <div id="container">
    这里是地图控件的容器
    </div>

    二、js

    首先引入api

    <script type="text/javascript" src="https://webapi.amap.com/maps?v=1.4.12&key=申请的开发者密匙&plugin=AMap.Geocoder"></script>

    接着在script标签中就可以调用了:

    //地图初始位置,可以在页面初始化时传入经纬度,也可以ajax获取,不过由于地图初始化较慢,需要考虑同步
    var lon = $('#longitude').val()
    var lat = $('#latitude').val();
    var map;
    if (lon > 0) {//初始化到已有地点
        map = new AMap.Map('container', {
            zoom: 20,
            resizeEnable: true,
            center: [lon, lat],
            viewMode: '3D'
        });
    } else {//初始化到默认地点
        map = new AMap.Map('container', {
            zoom: 12,
            resizeEnable: true,
            viewMode: '3D'
        });
    }
    //此插件用来显示当前位置,可在引入API时一同引入
    map.plugin('AMap.Geolocation', function () {
        var geolocation = new AMap.Geolocation({
            enableHighAccuracy: true,
            timeout: 10000,
            buttonOffset: new AMap.Pixel(10, 20),
            zoomToAccuracy: true,
            buttonPosition: 'RB'
        });
        map.center = geolocation;
        map.addControl(geolocation);//地图控件右下角显示当前位置
    });
    
    var geocoder, marker;
    if (!marker) {
        marker = new AMap.Marker();
        map.add(marker);
    }
    
    var lnglat;
    //地图点击时,获取点击地经纬度
    map.on('click', function (e) {
        lnglat = e.lnglat;
        regeoCode();
    })
    function regeoCode() {
        if (!geocoder) {
            geocoder = new AMap.Geocoder();
        }
    
        if (!marker) {
            marker = new AMap.Marker();
            map.add(marker);
        }
        marker.setPosition(lnglat);//设置标记的位置
        geocoder.getAddress(lnglat, function (status, result) {
            if (status === 'complete' && result.regeocode) {
                var address = result.regeocode.formattedAddress;
                //$('#address').val(address);//点击地名称
                //$('#longitude').val(lnglat.lng);//经纬度
                //$('#latitude').val(lnglat.lat);
            }
        });
        marker.setMap(map);//在地图上显示一个标记
    }
    // marker.setPosition([lon, lat]);
    

    三、效果

    点击右下角时会定位到当前位置(网络位置),点击地图的其他地方,蓝色标记会移动并获取当地名称和经纬度。

  • 相关阅读:
    iOS
    UI基本视图控制
    堆和栈的区别 ?
    单例模式
    Object-c的类可以多重继承么?可以实现多个接口么?Category是什么?重写一个类的方式用继承好还是分类好?为什么?
    id
    协议
    分类(类别)
    #import和#include以及@class三者的区别?
    内存管理
  • 原文地址:https://www.cnblogs.com/Zdelta/p/14122342.html
Copyright © 2011-2022 走看看