移动系统liao
2024-05-15 d7c7a6e9d05eec7b38b41b8ae39f373f650ca891
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
<style>
    .warning-msg { }
    .warning-msg-content { background-color: #FFFFCC; border: 1px solid #FFFF33; padding: 10px; margin-bottom: 15px; color: #666; }
        .warning-msg-content i { display: inline-block; font-size: 16px; margin-right: 5px; color: red; }
        .warning-msg-content p { display: inline-block; }
        .warning-msg-content a { color: #20a53a; }
            .warning-msg-content a:hover { color: #23527c; }
</style>
<body>
    <script type="text/html" template lay-done="layui.data.done(d);">
        <div class="layui-form coreshop-form layui-form-pane" lay-filter="LAY-app-CoreCmsEnterprise-MapForm" id="LAY-app-CoreCmsEnterprise-MapForm">
            <input type="hidden" name="coordinate" value="{{d.params.data.oldData}}">
 
            <div class="layui-form-item">
                <label for="tags" class="layui-form-label">请输入地址</label>
                <div class="layui-input-inline layui-inline-10">
                    <input name="tags" class="layui-input" lay-reqText="请输入标签" placeholder="请输入标签" id="place" style="z-index: 99999999" />
                </div>
                <div class="layui-form-mid" style="padding: 0 !important;float: right">
                    <button type="button" id="save-map" class="layui-btn" lay-submit lay-filter="formDemo">保存当前位置</button>
                </div>
            </div>
            <div class="layui-form-item layui-form-text">
                <div class="layui-input-inline layui-inline-10" id="container" style="min-width: 100%; min-height: 450px;">
                </div>
            </div>
        </div>
    </script>
</body>
<script>
    var $;
    var debug = layui.setter.debug;
    var coordinateBoxIdName;
    var addressBoxIdName;
    layui.data.done = function (d) {
        //开启调试情况下获取接口赋值数据
        if (debug) { console.log(d.params.data); }
 
        coordinateBoxIdName = d.params.data.coordinateBoxIdName;
        addressBoxIdName = d.params.data.addressBoxIdName;
 
        layui.use(['admin', 'form', 'coreHelper'], function () {
            $ = layui.$;
            var setter = layui.setter, admin = layui.admin, coreHelper = layui.coreHelper, form = layui.form;
            var layer = layui.layer;
 
            var cityLocation, map, marker, center = null;
            var markerImage = "http://api.map.baidu.com/images/marker_red_sprite.png";
            var preLocationCenter = $("input[name=coordinate]").val();
            if (preLocationCenter == '') {
                cityLocation = new qq.maps.CityService({
                    complete: function (result) {
                        center = new qq.maps.LatLng(result.detail.latLng.lat, result.detail.latLng.lng);
                        setMap(center);
                    }
                });
                cityLocation.searchLocalCity();
            } else {
                var arr = preLocationCenter.split(',');
                if (arr.length < 2) {
                    parent.layer.msg("坐标位置错误");
                    return false;
                }
                center = new qq.maps.LatLng(arr[0], arr[1]);
                setMap(center);
            }
            function setMap(center) {
 
                map = new qq.maps.Map(document.getElementById('container'), {
                    center: center,
                    zoom: 13
                });
 
                var size = new qq.maps.Size(20, 27);
                var origin = new qq.maps.Point(0, 0);
                var icon = new qq.maps.MarkerImage(markerImage, size, origin);
                //创建一个Marker
                marker = new qq.maps.Marker({
                    icon: icon,
                    position: center,
                    animation: qq.maps.MarkerAnimation.DOWN,
                    map: map,
                    title: '选择企业位置'
                });
 
                var jump = function (event) {
                    marker.setPosition(event.latLng);
                };
                qq.maps.event.addListener(map, 'click', jump);
 
                //搜索框提示
                var ap = new qq.maps.place.Autocomplete(document.getElementById('place'), {
                    offset: new qq.maps.Size(0, 5),
                    location: '北京市',
                    zIndex: 99999999
                });
                var keyword = "";
 
                //调用Poi检索类。用于进行本地检索、周边检索等服务。
                var searchService = new qq.maps.SearchService({
                    complete: function (results) {
                        if (results.type === "CITY_LIST") {
                            searchService.setLocation(results.detail.cities[0].cityName);
                            searchService.search(keyword);
                            return;
                        }
                        var pois = results.detail.pois;
                        var latlngBounds = new qq.maps.LatLngBounds();
                        for (var i = 0, l = pois.length; i < l; i++) {
                            var poi = pois[i];
                            latlngBounds.extend(poi.latLng);
                            var marker = new qq.maps.Marker({
                                map: map,
                                position: poi.latLng
                            });
 
                            marker.setTitle(poi.name);
                        }
                        map.fitBounds(latlngBounds);
                    }
                });
                //添加监听事件
                qq.maps.event.addListener(ap, "confirm", function (res) {
                    console.log('查询地址');
                    keyword = res.value;
                    searchService.search(keyword);
                });
            }
 
            $("#save-map").on('click', function () {
                parent.$("#" + coordinateBoxIdName).val(marker.position.lat + ',' + marker.position.lng);
                if (addressBoxIdName) {
                    setName(marker.position.lat, marker.position.lng);
                }
                //parent.layer.closeAll();
                parent.layer.close(layer.index);
            });
 
            form.render(null, 'LAY-app-CoreCmsEnterprise-MapForm');
        });
    };
 
    function setName(lat, lng) {
        geocoder = new qq.maps.Geocoder({
            complete: function (result) {
                parent.$("#"+addressBoxIdName).val(result.detail.address);
            }
        });
        var coord = new qq.maps.LatLng(lat, lng);
        geocoder.getAddress(coord);
 
    }
</script>