Как правильно получить ограничивающую рамку с помощью LocationRect.fromLocations(), когда местоположения охватывают 180-й меридиан?

Я использую "управление" Javascript v7 Bing Maps ( Я не знаю, почему это называется "контроль"...). Я звоню Microsoft.Maps.Map.setView({bounds: bounds}), и это не работает, как я ожидал или хотел.

У меня есть набор полигонов с точками, которые охватывают 180-й меридиан. Примером может служить граница островов Новой Зеландии - часть из них находится к западу от 180-го меридиана, часть (острова Чатем) - к востоку.

Когда я создаю многоугольник с этими границами и вызываю setView(), карта масштабируется waaaaaay.

enter image description here

Почему? и как этого избежать?


На этой страницепредставлена ​​демонстрация проблемы.

Вот код.

var map, MM = Microsoft.Maps;

function showMap(m) {
  var options = {
    mapTypeId: MM.MapTypeId.road // aerial,
    // center will be recalculated
    // zoom will be recalculated
  },
  map1 = new MM.Map(m, options);
  return map1;
}

function doubleclickCallback(e) {
  e.handled = true;
  var bounds = map.getBounds();
  map.setView({ bounds: bounds });
}

function init() {
  var mapDiv = document.getElementById("map1");
    map = showMap(mapDiv);

  MM.Events.addHandler(map, "dblclick", doubleclickCallback); 
}

Если дважды щелкнуть карту, на которой не отображается 180-й меридиан, ничего не произойдет. Если дважды щелкнуть, когда на карте отображается 180-й меридиан, карта сбрасывается до уровня масштабирования 1.

5
задан Cheeso 2 March 2012 в 06:17
поделиться