簡體   English   中英

單擊“標記”時獲取地址-Google Maps

[英]Get Address when click on Marker - Google Maps

我需要協助。
我從數據庫中加載了一些數據,並將其作為標記顯示在Google Maps上。
我的代碼:

function DisplayTraficCir(points) {
  for (i=0;i<points.length;i++){
    var myLatLng = new google.maps.LatLng(points[i].latitude,points[i].longitude)
    var marker = new google.maps.Marker({
      position: myLatLng,
      map: map
    });
  }
}

現在,我想在單擊Google Maps中的這些標記之一來獲取點的信息(緯度/經度)時做一些事情。
請幫忙。 謝謝。

使用google.maps.event.addListener方法:

function DisplayTraficCir(points) {
  for (i=0;i<points.length;i++){
    var myLatLng = new google.maps.LatLng(points[i].latitude,points[i].longitude)
    var marker = new google.maps.Marker({
      position: myLatLng,
      map: map
    });
    google.maps.event.addListener(marker, 'click', function () {
        var lng = points[i].longitue,
            lat = points[i].latitude;
        alert( lat + "-" + lng );
    });
  }
}

演示版

盡管razzak的方法可行,但我想提出一個替代方案:

function DisplayTraficCir( points ) {
    for( var i = 0;  i < points.length;  i++ ) {
        DisplayTraficPoint( points[i] );
    }
}

function DisplayTraficPoint( point ) {
    var myLatLng = new google.maps.LatLng( point.latitude, point.longitude );
    var marker = new google.maps.Marker({
        position: myLatLng,
        map: map
    });
    google.maps.event.addListener( marker, 'click', function() {
        alert( point.latitude + "-" + point.longitude );
    });
}

通過簡單地將循環體移動到其自身的函數中,現在,每次調用該函數時,代碼都會唯一地捕獲該函數中的變量。 也就是說, point變量引用了調用它的特定points[i]值。 同樣,每次調用此函數時, myLatLngmarker都是唯一的。

這為您提供了一種非常靈活而強大的方法來跟蹤您可能與標記關聯的任何其他數據:只需將這些數據設置為DisplayTraficPoint()的局部變量即可。

單擊標記時只需調用graphAddress()函數。

function graphAddress(){
    geocoder.geocode({'latLng': marker_wizard.getPosition()}, function(results, status) {
            if (status == google.maps.GeocoderStatus.OK) {
                    if (results[0]) {
                            var address = results[0].formatted_address.split(",");
                            var country = address[address.length -1];       
                            var cityname = address[address.length -3];                      
                            var state_zipcode = address[address.length -2].split(" ");
                            var state   = state_zipcode[1];
                            var zipcode = state_zipcode[2];
                            address = address.splice(0,(address.length -3));
                      }
                }
        });
} //graphAddress

注意:marker_wizard是標記的變量名。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM