Как я могу изменить положение центра карты, чтобы он соответствовал инфопузырьку? - PullRequest
0 голосов
/ 05 апреля 2019

Я могу легко получить маркер по центру. Тем не менее, это не учитывается в размерах инфопузырьков.

Я бы хотел изменить положение карты при нажатии на маркер, чтобы информационный пузырь помещался. Это может быть так же просто, как выравнивание центра по горизонтали и по вертикали снизу.

enter image description here

Я пытался манипулировать положением для центрирования маркера. Однако это неожиданно перемещает маркер и на новое место.

1 Ответ

0 голосов
/ 05 апреля 2019

Можете ли вы попробовать добавить ниже фрагмент JS, так как он допускает перемещение маркера, но ограничивает его движение при перетаскивании карты.

Надеюсь, это поможет вам достичь желаемого результата.

<script>
function addDraggableMarker(map, behavior){

  var marker = new H.map.Marker({lat:42.35805, lng:-71.0636});

// Ensure that the marker can receive drag events
  marker.draggable = true;
  map.addObject(marker);

  // disable the default draggability of the underlying map
  // when starting to drag a marker object:
  map.addEventListener('dragstart', function(ev) {

    var target = ev.target;
    if (target instanceof H.map.Marker) {
      behavior.disable();
    }},false);


  // re-enable the default draggability of the underlying map
  // when dragging has completed

  map.addEventListener('dragend', function(ev) {
    var target = ev.target;
    if (target instanceof mapsjs.map.Marker) {
      behavior.enable();
    }
  }, false);

  // Listen to the drag event and move the position of the marker
  // as necessary


map.addEventListener('drag', function(ev) {
    var target = ev.target,
        pointer = ev.currentPointer;
    if (target instanceof mapsjs.map.Marker) {
      target.setPosition(map.screenToGeo(pointer.viewportX, pointer.viewportY));
    }
  }, false);
}
  </script>
...