Клуб API Карт

Область видимости для двух координат при небольшом расстоянии между ними

Sergey Kshanovskiy
2 декабря 2013, 18:56

 

function detectPlace(el) {
  accountMap.geoObjects.remove(myCollectionAcc);
  if (clickIndex > 0) {
    accountMap.geoObjects.remove(clickedService);
  }
  if (detectIndex > 0) {
    accountMap.geoObjects.remove(myPlacemarkDetect);
    accountMap.geoObjects.remove(point);
  }
  geolocationAcc = ymaps.geolocation,
  serviceAcc = new GeolocationService(),
  myLocationAcc = serviceAcc.getLocation({
      // Режим получения наиболее точных данных.
      enableHighAccuracy: true,
      // Максимальное время ожидания ответа (в миллисекундах).
      timeout: 10000,
      // Максимальное время жизни полученных данных (в миллисекундах).
      maximumAge: 1000
  });
  myLocationAcc.then(function (loc) {
      myCoordsAcc = [loc.latitude, loc.longitude],
      myPlacemarkDetect = new ymaps.Placemark(myCoordsAcc, {
          balloonContentBody: "Ваше местоположение"
      }, {
          preset: 'twirl#redIcon'
      });
      accountMap.setCenter(myCoordsAcc);
      accountMap.geoObjects.add(myPlacemarkDetect);
      defaultPoint = el.parent().parent().parent().next();
      var centerCoord = [Number(defaultPoint.attr('data-lat')), Number(defaultPoint.attr('data-lng'))];
      point = new ymaps.Placemark(centerCoord, {
        balloonContentBody: 'Ваша услуга' + '</br>' + defaultPoint.attr('data-kat') + '</br>' + defaultPoint.attr('data-podkat')
      }, {});
      detectIndex++;
      accountMap.setBounds([centerCoord, myCoordsAcc]);
      accountMap.geoObjects.add(point);
  });
}

Есть функция которая устанавливает на карте 2 метки: 1 - местоположение через Geolocation API, 2 - метка по определенным координатам. Нужно обязательно, чтобы метки находиись в областе видимости, я это реализовал способом выше, но тут возникает нюанс если расстояние между метками очень маленькое, карта выдает ошибку о том, что заданной области не существует, расстояние может быть как и совсем маленькое, так и очень большое. Возможно я использую не совсем верный подход, буду рад слышать другие варианты реализации.

PS: Пробывал вариант так же вариант accountMap.setBounds(accountMap.geoObjects.getBounds());, но он постоянно выбивал ошибку.