2013-04-20 79 views
1

我需要一些幫助。
我從數據庫加載了一些點並將它們作爲標記顯示在Google地圖上。
我的代碼:點擊標記時獲取地址 - Google地圖

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 
    }); 
    } 
} 

而現在,我想點的信息(緯度/經度)當我點擊在谷歌地圖這些標記的人做一些東西。
任何幫助,請。 謝謝。

回答

0

使用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); 
    }); 
    } 
} 

Demo

+0

但是,當點擊地圖中的任何標記時,警報都是一樣的。它的價值是最後一點的經緯度。 – 2013-04-20 07:21:42

+0

好的。我完成了。只需在函數中添加「google.maps.event.addListener」方法,並在「for」語句中調用它。謝謝你的幫助! – 2013-04-20 07:30:02

+0

如果你想在for循環中使用'marke.getPosition()'方法,可以使用'this.getPosition()'來代替它,這樣它就會在每次點擊時選擇相關的標記,我更新了我的演示以查看更多細節。 – razzak 2013-04-20 07:58:13

0

雖然拉扎克的做法會的工作,我想提出一個替代方案:

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]值。同樣,myLatLng和對於每次調用此函數都是唯一的。

這給你一個非常靈活和強大的方式來跟蹤任何其他數據,你可能會與一個標記相關聯:只需將該數據作爲局部變量DisplayTraficPoint()

0

只需調用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是標記的變量名。

相關問題