как настроить рычаг масштабирования карты Google в соответствии с деталями адреса - PullRequest
0 голосов
/ 01 марта 2012

У меня есть веб-форма, где пользователи могут вводить части адреса - страну, регион, почтовый индекс, город, улицу, номер и т. Д. Мне нужно отобразить этот адрес на карте Google. Моя проблема заключается в том, чтобы увеличить карту Google в соответствии с деталями адреса - чем больше информации предоставит пользователь, тем больше будет увеличенная карта. Например, когда пользователь выбрал только страну, карта увеличивается до уровня страны. Когда улица указана, карта увеличивается до уровня улицы.

Вот как я теперь устанавливаю уровень масштабирования:

        function UpdateAddressOnMap(sender, args) {
            var address = "";
            var zoom = 6;

            if ($("[id*='ddlCountry'] :selected").val() > 0)
                address = $("[id*='ddlCountry'] :selected").text();

            if ($("[id*='ddlRegion'] :selected").val() > 0)
                address += ", " + $("[id*='ddlRegion'] :selected").text();

            if ($("[id*='ddlDepartment'] :selected").val() > 0)
                address += ", " + $("[id*='ddlDepartment'] :selected").text();
            alert($("[id*='tbPostalCode']").val());
            if ($("[id*='tbPostalCode']").val().length > 0) {
                address += ", " + $("[id*='tbPostalCode']").val();
                zoom += 2;
            }

            if ($("[id*='tbCity']").val().length > 0) {
                address += ", " + $("[id*='tbCity']").val();
                zoom += 1;
            }

            if ($("[id*='tbNeighbourgood']").val().length > 0) {
                address += ", " + $("[id*='tbNeighbourgood']").val();
            }

            if ($("[id*='tbStreet']").val().length > 0) {
                address += ", " + $("[id*='tbStreet']").val();
                zoom += 2;
            }
            var geocoder = new google.maps.Geocoder();
            geocoder.geocode({ 'address': address }, function (results, status) {

                if (status == google.maps.GeocoderStatus.OK) {
                    var latitude = results[0].geometry.location.lat();
                    var longitude = results[0].geometry.location.lng();

                    clearMarkers();
                    showFullAddressesOnMap(latitude, longitude, address)
                    map.setZoom(zoom);
                }
            });
        }

1 Ответ

1 голос
/ 01 марта 2012

Вы можете использовать объекты bounds или viewport, возвращаемые объектом Geocoder.Geometry API Карт Google:

http://code.google.com/apis/maps/documentation/javascript/reference.html#GeocoderGeometry

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...