45

このコードを使用して、ユーザーが以下のイベント リスナーを使用してマップをクリックしたときに座標を取得しています。

google.maps.event.addListener(map, 'click', function(event) {
    placeMarker(event.latLng);
});

ただし、ユーザーがマップで既にマークされている場所をクリックしても、この関数は呼び出されません。つまり、この関数は、マウス ポインターが Google マップで手のアイコンに変わるポイントでは呼び出されません。

この種の場所をキャプチャするのに助けが必要です。

4

5 に答える 5

52

You should add the click listener on marker will give you the position of marker.

//Add listener
google.maps.event.addListener(marker, "click", function (event) {
    var latitude = event.latLng.lat();
    var longitude = event.latLng.lng();
    console.log( latitude + ', ' + longitude );
}); //end addListener

Edit: You need something like this

//Add listener
google.maps.event.addListener(marker, "click", function (event) {
    var latitude = event.latLng.lat();
    var longitude = event.latLng.lng();
    console.log( latitude + ', ' + longitude );

    radius = new google.maps.Circle({map: map,
        radius: 100,
        center: event.latLng,
        fillColor: '#777',
        fillOpacity: 0.1,
        strokeColor: '#AA0000',
        strokeOpacity: 0.8,
        strokeWeight: 2,
        draggable: true,    // Dragable
        editable: true      // Resizable
    });

    // Center of map
    map.panTo(new google.maps.LatLng(latitude,longitude));

}); //end addListener
于 2013-09-30T06:11:10.713 に答える
14

もう 1 つの解決策は、マップの四角形と同じサイズのポリゴンをマップ上に配置し、この四角形のクリックを収集することです。

function initialize() {
  var mapDiv = document.getElementById('map-canvas');
  var map = new google.maps.Map(mapDiv, {
    center: new google.maps.LatLng(37.4419, -122.1419),
    zoom: 13,
    mapTypeId: google.maps.MapTypeId.ROADMAP
  });

  google.maps.event.addListener(map, 'bounds_changed', function() {
      var lat1 = 37.41463623043073;
      var lat2 = 37.46915383933881;
      var lng1 = -122.1848153442383;
      var lng2 = -122.09898465576174;  

      var rectangle = new google.maps.Polygon({
         paths : [
           new google.maps.LatLng(lat1, lng1),
           new google.maps.LatLng(lat2, lng1),
           new google.maps.LatLng(lat2, lng2),
           new google.maps.LatLng(lat1, lng2)
         ],
        strokeOpacity: 0,
        fillOpacity : 0,
        map : map
      });
      google.maps.event.addListener(rectangle, 'click', function(args) {  
         console.log('latlng', args.latLng);
    });
  });
}

興味のある場所 (およびその同類) の LatLng も表示されるようになりました。

デモ -> http://jsfiddle.net/qmhku4dh/

于 2013-09-30T09:57:34.723 に答える