<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>地图</title>
    <script type="text/javascript" src="__COMMON__/jquery-3.4.1.min.js"></script>
    <link rel="stylesheet" href="__MANAGER__/layui/css/layui.css">
    <script type="text/javascript" src="__MANAGER__/layui/layui.all.js"></script>
    <!--高德地图js引入-->
    <script type="text/javascript" src="http://webapi.amap.com/maps?v=1.4.14&key=68b7bd8022d63972a2a31b5d6a3c69b6"></script>
    <style>
        #iMap {
            height: 450px;
            width: 100%;
            clear: both;
        }
        .info {

            margin: 0 0 0 10px;
        }
        label {
            width: 80px;
            float: left;
        }
        .detail {
            padding: 10px;
            border: 1px solid #aaccaa;
        }
    </style>
</head>
<body>
<div class="info">
    <p>说明:</p>
    <p>1、鼠标滚轮可以缩放地图,拖动地图。</p>
    <p>2、点击地图,即可获得GCJ-02的经纬度坐标,即火星坐标。</p>
</div>
<div class="layui-card layui-col-md12">
    <div class="layui-card-body layui-form" style="overflow: auto;">
            <div class="layui-form-item">
                <div class="layui-input-inline">
                    <input type="text" class="layui-input" id="keyword" placeholder="请输入地名" value=""/>
                </div>
                <div class="layui-input-inline">
                    <button type="button" class="layui-btn layui-btn-normal" id="search">搜索</button>
                </div>
            </div>
    </div>
</div>
<div id="iMap"></div>
<script language="javascript">
    layui.use(["layer"],function () {
        var layer =layui.layer;
        $(function () {
            var mapObj;
            var lnglatXY;
            //初始化地图
            function mapInit() {
                let lng = {:empty($lng)?"104.072356":$lng};
                let lat = {:empty($lat)?"30.662162":$lat};
                var opt = {
                    level: 14, //设置地图缩放级别
                    center: new AMap.LngLat(lng,lat) //设置地图中心点
                }
                mapObj = new AMap.Map("iMap", opt);
                AMap.event.addListener(mapObj, 'click', getLnglat); //点击事件

                let lnglatXY = new AMap.LngLat(lng, lat);

                // 创建一个 Marker 实例:
                var marker = new AMap.Marker({
                    position: lnglatXY,   // 经纬度对象,也可以是经纬度构成的一维数组[116.39, 39.9]
                });
                // 将创建的点标记添加到已有的地图实例:
                mapObj.add(marker);
            }
            mapInit();
            function geocoder() {
                var MGeocoder;
                //加载地理编码插件
                mapObj.plugin(['AMap.ToolBar','AMap.Scale','AMap.OverView','AMap.MapType','AMap.Geolocation'],
                    function(){
                        mapObj.addControl(new AMap.ToolBar());


                        mapObj.addControl(new AMap.Scale());


                        mapObj.addControl(new AMap.OverView({isOpen:true}));
                        mapObj.addControl(new AMap.MapType());
                        mapObj.addControl(new AMap.Geolocation());
                    });
                mapObj.plugin(["AMap.Geocoder"], function () {
                    MGeocoder = new AMap.Geocoder({
                        radius: 1000,
                        extensions: "all"
                    });
                    //返回地理编码结果
                    AMap.event.addListener(MGeocoder, "complete");
                    //逆地理编码
                    MGeocoder.getAddress(lnglatXY);
                });
            }

            //鼠标点击,获取经纬度坐标
            function getLnglat(e) {
                mapObj.clearMap();
                let lng = e.lnglat.getLng();
                let lat = e.lnglat.getLat();
                parent.setLngLat(lng,lat);

                let lnglatXY = new AMap.LngLat(lng, lat);
                geocoder();

                // 创建一个 Marker 实例:
                var marker = new AMap.Marker({
                    position: lnglatXY,   // 经纬度对象,也可以是经纬度构成的一维数组[116.39, 39.9]
                });
                // 将创建的点标记添加到已有的地图实例:
                mapObj.add(marker);
            }
            //搜索
            $("#search").on("click",function () {
                $.ajax({
                    url: "https://restapi.amap.com/v3/geocode/geo?parameters",
                    data: {
                        "key":"68b7bd8022d63972a2a31b5d6a3c69b6",
                        "address":$("#keyword").val(),
                    },

                    type: 'get',
                    dataType: 'json',
                    timeout: 10000,
                    success: function(data){
                        if(data.status==1&&data.count>0){
                            let geo = data.geocodes[0].location.split(",");
                            let lng = geo[0];
                            let lat = geo[1];
                            //设置中心点
                            mapObj.setZoomAndCenter(14, [lng,lat ]);

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

                            parent.setLngLat(lng,lat);
                        }else{
                            layer.msg("没有搜索结果");
                        }
                    },
                    error:function(xhr,type,errorThrown){
                        layer.msg('操作失败!', {time: 1500});
                    }
                });


            })

        })
    })

</script>
</body>
</html>