Как в javascript получить доступ к моим точкам? - PullRequest
0 голосов
/ 16 ноября 2011

При переносе кода из карт Google v2 в v3 мне интересно, как получить доступ к нажатым точкам на моей карте , когда я могу сделать так, чтобы символ оповещения записывал информацию об отладке. Я хотел бы получить доступ к этой точке. нажал на карту:

google.maps.event.addListener(map, "click", gAdd);

Мой соответствующий код:

    function gAdd(overlay, latlng) {
 alert("test"+overlay);
        if (latlng != null) {
            alert("test");//address = latlng;
            try {
                alert("test");//geocoder.getLocations(latlng, gDisplay);
            } catch (e) {}
        }
    }


 function initialize() {
     document.upload.lat.value = geoip_latitude();
     document.upload.lng.value = geoip_longitude();
     geocoder = new google.maps.Geocoder();
     var latlng = new google.maps.LatLng(geoip_latitude(), geoip_longitude());
     var myOptions = {
         zoom: 8,
         center: latlng,
         mapTypeId: 'roadmap'
     }
     map = new google.maps.Map(document.getElementById("gmap"), myOptions);
     google.maps.event.addListener(map, "click", gAdd);


     geocoder.geocode({
         'latLng': latlng
     }, function (results, status) {

         if (status == google.maps.GeocoderStatus.OK) {
             document.getElementById("message").innerHTML = results[5].formatted_address;

         } else {

         }
     });


     if (navigator.geolocation) {


         browserSupportFlag = true;
         navigator.geolocation.getCurrentPosition(function (position) {
             initialLocation = new google.maps.LatLng(position.coords.latitude, position.coords.longitude);

             var latlng = initialLocation
             geocoder.geocode({
                 'latLng': latlng
             }, function (results, status) {
                 if (status == google.maps.GeocoderStatus.OK) {
                     if (results[1]) {
                         marker = new google.maps.Marker({
                             position: latlng,
                             map: map
                         });
                         infowindow.setContent('<a href="/li?lat=' + latlng.lat() + '&lon=' + latlng.lng() + '">' + results[1].formatted_address + '</a>');
                         infowindow.open(map, marker);
                         document.upload.lat.value = latlng.lat();
                         document.upload.lng.value = latlng.lng();
                         document.upload.place.value = results[5].formatted_address


                     } else {
                         alert("No results found");
                     }
                 } else {
                     alert("Geocoder failed due to: " + status);
                 }
             });

         }, function () {
             handleNoGeolocation(browserSupportFlag);
         });
     } else if (google.gears) {
         // Try Google Gears Geolocation
         browserSupportFlag = true;
         var geo = google.gears.factory.create('beta.geolocation');
         geo.getCurrentPosition(function (position) {
             initialLocation = new google.maps.LatLng(position.latitude, position.longitude);
             //contentString = "Location found using Google Gears";
             var latlng = initialLocation
             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('<a href="/li?lat=' + latlng.lat() + '&lon=' + latlng.lng() + '">' + results[1].formatted_address + '</a>');
                         infowindow.open(map, marker);
                         document.upload.lat.value = latlng.lat();
                         document.upload.lng.value = latlng.lng();
                         //alert('6 '+results[6].formatted_address );
                         document.upload.place.value = results[5].formatted_address;

                     } else {
                         alert("No results found");
                     }
                 } else {
                     alert("Geocoder failed due to: " + status);
                 }
             });


         }, function () {
             handleNoGeolocation(browserSupportFlag);
         });
     } else {
         // Browser doesn't support Geolocation
         browserSupportFlag = false;
         handleNoGeolocation(browserSupportFlag);
     }

Раньше это работало с Google Maps v2, и теперь я хочу перенести его в v3.

1 Ответ

2 голосов
/ 16 ноября 2011

Обработчик кликов получает объект события в V3, а координаты находятся в свойстве latLng :

function gAdd(ev) {
    var latlng = ev.latLng;
    //...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...