thinkphp5 后台前端使用高德地图获取位置信息

thinkphp5 后台前端使用高德地图获取位置信息

 

<div class="layui-form-item">
    <label class="layui-form-label">
        地址
    </label>
    <div class="layui-input-block">
        <input id="search" type="text" value="{$franchisee.address|default=''}" name="address"  placeholder="请输入地址" autocomplete="off" class="layui-input">
        <input id="lat" type="text" value="{$franchisee.latitude|default=''}" name="latitude"  placeholder="请输入纬度" autocomplete="off">
        <input id="lng" type="text" value="{$franchisee.longitude|default=''}" name="longitude"  placeholder="请输入经度" autocomplete="off">
        <div id="g-map" style="height: 500px;"></div>
    </div>
</div>

<!--高德地图-->
<!-- key 需要自己审请一个-->
<script type="text/javascript" src="https://webapi.amap.com/maps?v=1.4.6&key=自己申请的key&plugin=AMap.Autocomplete,AMap.PlaceSearch,AMap.CitySearch,AMap.Geolocation,AMap.Geocoder"></script>
<script type="text/javascript" src="https://cache.amap.com/lbs/static/addToolbar.js"></script>
<script type="text/javascript" src="https://webapi.amap.com/demos/js/liteToolbar.js"></script>
<script src="https://webapi.amap.com/ui/1.0/main.js"></script>
<link rel="stylesheet" href="https://cache.amap.com/lbs/static/main1119.css"/>

<script type="text/javascript">
    var map,addMarker;
    var geocoder;
    var placeSearch;

    var lat = "{$franchisee.latitude|default='23.153608'}";
    var lng = "{$franchisee.longitude|default='113.325996'}";
    map = new AMap.Map('g-map', {
        resizeEnable: true,
        center: [lng,lat],
        zoom:16,//级别
    });

    // 创建一个 Marker 实例:
    var marker = new AMap.Marker({
    position: new AMap.LngLat(lng, lat),   // 经纬度对象,也可以是经纬度构成的一维数组[116.39, 39.9]
});
    // 将创建的点标记添加到已有的地图实例:
    map.add(marker);
    map.on('click', function(e) {
        map.remove(marker);
    });

    //为地图注册click事件获取鼠标点击出的经纬度坐标
    var clickEventListener = map.on('click', function(e) {
        $("input[name='m_point']").val(e.lnglat.getLng() + ',' + e.lnglat.getLat());
        $("input[name='latitude']").val(e.lnglat.getLat());
        $("input[name='longitude']").val(e.lnglat.getLng());

        var lat = "{$franchisee.latitude|default='23.107563'}";
        var lng = "{$franchisee.longitude|default='109.598971'}";
        // 创建一个 Marker 实例:
        var marker = new AMap.Marker({
        position: new AMap.LngLat(e.lnglat.getLng(), e.lnglat.getLat()),   // 经纬度对象,也可以是经纬度构成的一维数组[116.39, 39.9]
    });

    // 将创建的点标记添加到已有的地图实例:
    map.add(marker);
    map.on('click', function(e) {
        // 移除已创建的 marker
        map.remove(marker);
    });

    var geocoder; 
    var lnglatXY=new AMap.LngLat(e.lnglat.getLng(),e.lnglat.getLat()); 

    //加载地理编码插件 
    map.plugin(["AMap.Geocoder"],function(){  
        geocoder=new AMap.Geocoder({ 
        radius:1000, //以已知坐标为中心点,radius为半径,返回范围内兴趣点和道路信息 
        extensions: "all"//返回地址描述以及附近兴趣点和道路信息,默认"base" 
    }); 

    //返回地理编码结果 
    AMap . event . addListener(geocoder, "complete",geocoder_CallBack); 
        //逆地理编码 
        geocoder.getAddress(lnglatXY); 
    });

    //地理编码返回结果展示  
    function geocoder_CallBack(data){
        console.log(data,'kkkkk');
        var resultStr="";
        //地理编码结果数组
        var geocode = new Array();
        geocode = data.geocodes; 
        $("input[name='address']").val(data.regeocode.formattedAddress);
    }
});

    var auto = new AMap.Autocomplete({
        input: "tipinput"
    });

    AMap.event.addListener(auto, "select", select);//注册监听,当选中某条记录时会触发
    function select(e) {
        if (e.poi && e.poi.location) {
            map.setZoom(15);
            map.setCenter(e.poi.location);
        }
    }

    AMap.plugin('AMap.Autocomplete', function(){
        // 实例化Autocomplete
        var autoOptions = {
        // input 为绑定输入提示功能的input的DOM ID
        input: 'search'
    }
    var autoComplete= new AMap.Autocomplete(autoOptions);
        // 无需再手动执行search方法,autoComplete会根据传入input对应的DOM动态触发search
        var placeSearch = new AMap.PlaceSearch({
            city:'广州',
            map:map
        })
        AMap.event.addListener(autoComplete, 'select', function(e){
            //TODO 针对选中的poi实现自己的功能
            placeSearch.search(e.poi.name)
        })
    })

</script>