Автоматический зум в зависимости от крайних точек - PullRequest
0 голосов
/ 09 июня 2018

Я использую OL 4.6.5.

Я поместил некоторые маркеры в векторный слой и использовал самодельную вещь, чтобы найти масштаб в зависимости от того, как далеко друг от друга расположены маркеры (точки отбаза данных).Это неуклюже и грубо, но это работает ...

Теперь я ищу функцию или другое средство для автоматической установки увеличения в зависимости от максимума и минимума и долготы.Я не мог заставить "fitExtent ()" работать, поэтому я посмотрел здесь и нашел два решения, но я могу использовать только одно:

var onChangeKey = vectorSource.on('change', function() {   if
(vectorSource.getState() == 'ready') {
    vectorSource.unByKey(onChangeKey);
    map.getView().fitExtent(vectorSource.getExtent(), map.getSize());   } });

Он использует "FitExtent ()" иначе, чемЯ сделал, но, к сожалению, это не меняет масштаб с 2. Другое решение - какой-то странный язык ???Консоль JS сообщает: «Uncaught SyntaxError: неожиданный идентификатор».

Здесь есть пример страницы: https://xerxx.se/zoomtest.html Код JS находится внизу.Оба решения, которые я пробовал, есть, приведенное выше - «в действии».Мой собственный неуклюжий код тоже есть - вы его увидите.

Для этого должна быть умная команда, верно?

1 Ответ

0 голосов
/ 09 июня 2018

Синтаксис, который вы приняли в своем коде, здесь необязателен, так как vectorSource.on('change', function() { важен только при асинхронной загрузке источника (вызовы Ajax).

Ваш код является синхронным, например

var vectorSource = new ol.source.Vector({
    features: [placeOSM[1], placeOSM[2]]
});
...

Заменить блок

var onChangeKey = vectorSource.on('change', function() {
  if (vectorSource.getState() == 'ready') {
    vectorSource.unByKey(onChangeKey);
    map.getView().fitExtent(vectorSource.getExtent(), map.getSize());
  }
});

на

// fitExtent is now fit and second arg map.getSize() is now optional
// e.g http://openlayers.org/en/latest/apidoc/ol.View.html#fit 
map.getView().fit(vectorSource.getExtent());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...