1

助けが必要です。
データベースからポイントを読み込んで、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
    });
  }
}

そして今、Google マップでこれらのマーカーの 1 つをクリックして何らかの操作を行うときに、ポイントの情報 (緯度/経度) を取得したいと考えています。
助けてください。ありがとう。

4

3 に答える 3

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 は、マーカーの変数名です。

于 2016-11-28T11:37:30.330 に答える
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 );
    });
  }
}

デモ

于 2013-04-20T06:01:21.830 に答える
0

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()です。

于 2013-04-20T09:51:55.633 に答える