Как получить границы группы маркеров на карте Cloudmade Leaflet

Я создал мобильную карту с помощью Cloudmade Leaflet, и теперь у меня есть несколько маркеров, совпадающих со значениями LatLong в базе данных. Тем не менее, я не могу понять, как установить начальный вид карты, чтобы установить масштаб и центрировать карту в группе маркеров. Я предполагаю, что мне нужно использовать setBounds, но для этого мне нужно знать, каковы координаты NorthEast и SouthWest.

Нужно ли мне проходить через весь массив координат маркеров, чтобы найти значения для режима "Самый северный", "Самый восточный", "Самый южный" и "Запад", или есть более простой способ?

4 ответа

Решение

Вы можете использовать метод fitBounds(). Брошюра справочная

Создайте объект L.LatLngBounds и переберите свои маркеры, вызывая L.LatLngBounds.extend() для каждого lat/lng.

map.fitBounds(markers.getBounds());

должно работать... при условии, что у вас те же имена, что и в примерах..

Я думаю, что самым простым способом было бы сделать что-то вроде этого:

int minLat = int.MaxValue;
int minLong = int.MaxValue;
int maxLat = int.MinValue;
int maxLong = int.MinValue;

foreach (var point in coordinates) 
{
    minLat = Math.Min(point.Latitude(), minLat);
    minLong = Math.Min(point.Longitude(), minLong);
    maxLat = Math.Max(point.Latitude(), maxLat);
    maxLong = Math.Max(point.Longitude(), maxLong);
} 

Это хорошо сработало для меня в C#.

Другие вопросы по тегам