Google maps и shadowbox - PullRequest
       23

Google maps и shadowbox

0 голосов
/ 27 сентября 2011

Я создаю функцию javascript, которая загружает карты Google в shadowbox, это довольно просто с помощью этого кода (я использовал плагин calld GeoPlugin, чтобы получить широту и долготу, потому что я сейчас не знаю, как получить широту и долготуавтоматически):

function initGeoLocationOnDemand() {

    $('a.btnInitGeoLoc').click(function () {
        if (GBrowserIsCompatible()) {
            Shadowbox.open({
                player: "html",
                content: "",
                height: 300,
                width: 500,
                options: {
                    onFinish: function (item) {
                        var body = document.getElementById(Shadowbox.playerId);
                        var map = new GMap2(body);
                        //using geoPlugin to get lat and long
                        var point = new GLatLng(geoplugin_latitude(), geoplugin_longitude());
                        map.setCenter(point, 15);
                        var marker = new GMarker(point);
                        var addrFields = ['street_address'];
                        map.addOverlay(marker);

                        marker.openInfoWindow(document.createTextNode("hello");
                        // add some simple controls
                        map.addControl(new GSmallMapControl());
                        map.addControl(new GMapTypeControl());
                    }
                }
            });
        } else {
            alert("Your browser is not compatible with Google Maps!");
        }
    });
    Shadowbox.init();
}

Теперь я хотел бы использовать Обратное геокодирование GoogleMaps , чтобы попасть внутрь информационного окна в информации маркера googleMaps, например: название города, название страны, название улицы, почтовый индекси т. д.

Я сделал этот код, следуя API GoogleMaps, но он больше не работает ... всегда используя GeoPlugin:

function initGeoLocationOnDemand() {

    $('a.btnInitGeoLoc').click(function () {
        if (GBrowserIsCompatible()) {
            Shadowbox.open({
                player: "html",
                content: "",
                height: 300,
                width: 800,
                options: {
                    onFinish: function (item) {

                        var body = document.getElementById(Shadowbox.playerId);
                        var geocoder;
                        var map = new google.maps.Map(body);
                        var infowindow = new google.maps.InfoWindow();
                        var marker;
                        function initialize() {
                            geocoder = new google.maps.Geocoder();
                            var latlng = new google.maps.LatLng(geoplugin_latitude(),geoplugin_longitude());
                            var myOptions = {
                                zoom: 8,
                                center: latlng,
                                mapTypeId: google.maps.MapTypeId.ROADMAP
                            }
                            map = new google.maps.Map(body, myOptions);
                        }

                        function codeLatLng() {
                            var input = document.getElementById("latlng").value;
                            var latlngStr = input.split(",", 2);
                            var lat = parseFloat(latlngStr[0]);
                            var lng = parseFloat(latlngStr[1]);
                            var latlng = new google.maps.LatLng(lat, lng);
                            geocoder.geocode({ 'latLng': latlng }, function (results, status) {
                                if (status == google.maps.GeocoderStatus.OK) {
                                    if (results[1]) {
                                        map.setZoom(11);
                                        marker = new google.maps.Marker({
                                            position: latlng,
                                            map: map
                                        });
                                        infowindow.setContent(results[1].formatted_address);
                                        infowindow.open(map, marker);
                                    }
                                } else {
                                    alert("Geocoder failed due to: " + status);
                                }
                            });
                        }
                    }
                }
            });
        } else {
            alert("Your browser is not compatible with Google Maps!");
        }
    });
    Shadowbox.init();
}

Есть способ получить широтуи долгота без использования плагинов?

Есть способ получить информацию о названии страны, названии города, названии улицы, почтовом индексе и т. д.?

Заранее спасибо за помощь!

Ответы [ 2 ]

0 голосов
/ 27 сентября 2011

Я не знаком с Shadowbox, но, несомненно, есть хотя бы одна проблема с обработкой результатов геокодера.Вы должны использовать results[0] вместо results[1], чтобы получить первый (если таковой имеется) обратный геокод latlng.

0 голосов
/ 27 сентября 2011

Широта и долгота какого места вы хотите? Клиентский компьютер?

...