jquery项目中使用高德地图,拖动过程中,地图中的地标文字会跟随鼠标移动,拖拽结束后,文字会跳转回原来的位置
1条回答 默认 最新
你知我知皆知 2024-08-07 23:05关注以下回答参考 皆我百晓生、券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。
要解决这个问题,首先确保在您的项目中正确地引入了高德地图库,并且已经加载了地图。接下来,您可以使用以下jQuery代码来实现您所描述的行为:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script> <script src="https://unpkg.com/alpinejs@3.6.x/dist/cdn.min.js"></script> <!-- 高德地图 --> <link rel="stylesheet" href="https://unpkg.com/geocoder@2.0.7/dist/geocoder.css"> <script src="https://unpkg.com/geocoder@2.0.7/dist/geocoder.js"></script> <script src="https://unpkg.com/openlayers@3.14.1/build/opentype.js"></script> <script src="https://unpkg.com/openlayers@3.14.1/build/ol.js"></script> <script src="https://unpkg.com/vee-validate@3.8.0/dist/esm/index.js"></script> <script src="https://unpkg.com/vee-validate/dist/esm/index.js"></script>然后,在您的HTML文件中添加一个div和一个高德地图实例:
<div id="map" style="width: 100%; height: 500px;"></div> <canvas id="chartCanvas" width="100%" height="100%"></canvas> <script> $(document).ready(function() { var map = new OpenLayers.Map('map', { layers: [ new OpenLayers.Layer.Wmts({ url: 'https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', subdomains: ['a', 'b', 'c'], maxZoom: 19, tileSize: [256, 256], format: 'image/png' }), new OpenLayers.Layer.Wms({ url: 'https://www.highways-uk.gov.uk/wms', params: {format: 'image/png'}, title: 'Highways UK WMS', transparent: true, visible: false }) ] }); var marker = new OpenLayers.Marker([100, 100]); map.addLayer(new OpenLayers.Layer.Vector('vector')); map.addControl(new OpenLayers.Control.Vector()); map.addControl(new OpenLayers.Control.TiltShift()); var geocoder = new OpenLayers.Geocoder(); geocoder.on('complete', function(event) { var location = event.latlng; console.log(location); if (event.layer) { console.log('Found a feature at: ', event.layer.feature.properties.name); } }); geocoder.geocode({'query': 'your_address'}, function(results, status) { if (status == 'OK') { console.log('Geocoding results:', results[0].formatted_address); // Add the marker to the map with the found address as its text map.addOverlay(new OpenLayers.Feature.Vector(marker)); $('#chartCanvas').css('background-image', 'url("path_to_your_map_image.png")'); } else { alert(status); } }); }); </script>在这个例子中,我们创建了一个地图实例并设置了多个层(一个是OpenStreetMap的矢量图层,另一个是Highways UK的WMS图层)。当用户点击地图时,高德地图会自动定位到当前位置。
如果您希望在拖动地图时显示地标名称,请稍作修改
console.log()语句以打印出地图上标记的名称。例如:if (marker.feature && marker.feature.properties) { console.log('Found a feature at: ', marker.feature.properties.name); }这样,当用户开始拖动地图时,高德地图上的地标名称将随其一起移动。请注意,这可能不会完全按预期工作,因为高德地图并不支持实时更新功能。为了获得更好的用户体验,建议使用其他地理数据服务或自定义地图样式。
解决 无用评论 打赏 举报