aoyusky 2023-10-07 16:48 采纳率: 100%
浏览 57
已结题

腾讯地图 ,想实现移动地图时使得中间的marker跟着一起移动

腾讯地图 ,想实现移动地图时使得中间的marker跟着一起移动,手机浏览器中如何实现?
类似这样的效果:
https://mapapi.qq.com/web/mapComponents/locationPicker/v/index.html?search=1&type=0&key=OB4BZ-D4W3U-B7VVO-4PJWW-6TKDJ-WPB77&referer=myapp

目前我监听了drag事件,如下:
qq.maps.event.addListener(map, 'drag', function(event) {
marker.setPosition(map.getCenter());
});

但在手机浏览器中拖拽地图时,不会跟随一起动,直到放开地图后才会设置上去。
但在pc浏览器中可以,往高人指点啊~

  • 写回答

8条回答 默认 最新

  • bug菌¹ 优质创作者: Java、算法与数据结构技术领域 2023-10-08 15:17
    关注

    该回答引用ChatGPT,希望对题主有所帮助,如有帮助,还望采纳。


    可以尝试给marker添加CSS属性position: absolutepointer-events: none,然后在drag事件中手动计算marker的位置并设置它的left和top属性。

    例如,给marker添加以下样式:

    #marker {
      position: absolute;
      pointer-events: none;
      width: 20px;
      height: 20px;
      margin-left: -10px;
      margin-top: -10px;
      background-color: red;
      border-radius: 50%;
    }
    

    然后在drag事件中计算marker的位置并设置left和top:

    qq.maps.event.addListener(map, 'drag', function(event) {
      var latlng = map.getCenter();
      var pixel = map.getProjection().fromLatLngToPoint(latlng);
      var markerPosition = new qq.maps.Point(
        pixel.x * Math.pow(2, map.getZoom()),
        pixel.y * Math.pow(2, map.getZoom())
      );
      markerPosition.x -= $('#marker').width() / 2;
      markerPosition.y -= $('#marker').height() / 2;
      $('#marker').css({
        left: markerPosition.x + 'px',
        top: markerPosition.y + 'px'
      });
    });
    

    注意,以上代码中使用了jQuery,需要先引入jQuery库。另外,marker的id为'marker',可以根据实际情况进行修改。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(7条)

报告相同问题?

问题事件

  • 系统已结题 10月17日
  • 已采纳回答 10月9日
  • 赞助了问题酬金15元 10月7日
  • 修改了问题 10月7日
  • 展开全部