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

#here-api

#здесь-api

Вопрос:

Я могу легко расположить маркер по центру. Однако размер информационного пузырька не учитывается.

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

введите описание изображения здесь

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

Ответ №1:

Не могли бы вы попробовать добавить ниже фрагмент 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>