Центрирование Google Maps в зависимости от булавки - PullRequest
0 голосов
/ 30 декабря 2011

У меня есть веб-сайт ASP.NET, который содержит карту Google. Я использую фреймворк GoogleMapForASPNet, созданный каким-то умным и полезным человеком.

В любом случае, у меня проблема с центрированием карты после вставки двух выводов.

По сути, я вычисляю среднюю точку штифтов и устанавливаю ее в качестве центральной точки карты.

Ниже мой код:

GooglePoint newPoint = new GooglePoint();
        double newLat = 0;
        double newLong = 0;

        if (googlePointA.Latitude > googlePointB.Latitude)
        {
            newLat = googlePointA.Latitude - googlePointB.Latitude;
            newPoint.Latitude = googlePointA.Latitude - newLat;
        }
        else
        {
            newLat = googlePointB.Latitude - googlePointA.Latitude;
            newPoint.Latitude = googlePointB.Latitude + newLat;
        }
        if (googlePointA.Longitude > googlePointB.Longitude)
        {
            newLong = googlePointA.Longitude - googlePointB.Longitude;
            newPoint.Longitude = googlePointA.Longitude - newLong;
        }
        else
        {
            newLong = googlePointB.Longitude - googlePointA.Longitude;
            newPoint.Longitude = googlePointB.Longitude + newLong;
        }

        GoogleMapForASPNet1.GoogleMapObject.CenterPoint = newPoint;
        GoogleMapForASPNet1.GoogleMapObject.ZoomLevel = 8;

Работает пополам, но не правильно. Как и в случае, когда я кормлю разные булавки, на самом деле это не центр карты, но достаточно близко. Или, иногда, другая булавка будет вне карты, но только на дюйм, что означает, что карта вообще не центрирована.

Увеличение является статическим, потому что контакты всегда будут рядом, поэтому мне не нужно делать его динамичным.

Любая помощь чрезвычайно, чрезвычайно, чрезвычайно ценится.

Спасибо.

1 Ответ

0 голосов
/ 30 декабря 2011

В API Карт Google есть объект, который должен это сделать: google.maps.LatLngBounds

Просто создайте объект LatLngBounds, добавьте к нему координаты выводов с помощью метода extend(), затем используйте метод map panToBounds(yourBounds), и все готово!

...