2014-06-05 5 views
-1

글로벌 아이디어 : 처음 사용자는 마커와 폴리 라인을 추가 할 수 있습니다. 그런 다음 그는 dblclick에 의해 새로운 창을 통해 모든 마커에 Infowindow를 추가 할 수 있습니다. 그러나 안타깝게도 dblclick to marker는 작동하지 않습니다. 그리고 조언을 해줄 수 있습니까? jQuery를 통해 마커에 정보를 추가하는 방법은 무엇입니까?Google지도 API dblclick 마커, 새 창을 열고 정보 추가

 var all_overlays = []; 

function writeInfo() { 
      alert("привет!"); 
     } 

function addPolyline() { 
      drawingManager.setDrawingMode(google.maps.drawing.OverlayType.POLYLINE); 
     } 

     function addMarker() { 
      drawingManager.setDrawingMode(google.maps.drawing.OverlayType.MARKER); 
     } 
function initialize() { 
     var map = new google.maps.Map(document.getElementById('map'), { 
      zoom: 4, 
      //maxZoom:7, 
      minZoom: 2, 
      disableDoubleClickZoom: true, 
      center: new google.maps.LatLng(59.32522, 18.07002), 
      mapTypeId: google.maps.MapTypeId.ROADMAP, 
      disableDefaultUI: true, 
      zoomControl: true 
     }); 

     var polyOptions = { 
      strokeWeight: 0, 
      fillOpacity: 0.45, 
      editable: true 
     }; 

     drawingManager = new google.maps.drawing.DrawingManager({ 
     drawingControl: false, 
     drawingControlOptions: { 
      position: google.maps.ControlPosition.TOP_CENTER, 
      drawingModes: [ 
       google.maps.drawing.OverlayType.MARKER, 
       polyLine = google.maps.drawing.OverlayType.POLYLINE, 
      ] 
     }, 
      markerOptions: { 
      draggable: true, 
      animation: google.maps.Animation.DROP 
      }, 
      polylineOptions: { 
      editable: true, 
      geodesic: true 
      }, 
      map: map 
     }); 

     google.maps.event.addListener(drawingManager, 'overlaycomplete', function(e) { 
      var allOverlays = all_overlays.push(e); 
      if (e.type != google.maps.drawing.OverlayType.MARKER) { 
      var line = e; 
      line.type = e.type; 
      var newShape = e.overlay; 
      newShape.type = e.type; 

      google.maps.event.addListener(newShape, 'click', function() { 
       setSelection(newShape); 
      }); 
      setSelection(newShape); 
      } 
     }); 

     google.maps.event.addListener(all_overlays, 'dblclick', writeInfo); 

google.maps.event.addListener ("개체가 저장되는 곳은 '예, 변수가 될해야합니까?",'dblclick ', writeInfo); 나는 마커 (또는 다른 오버레이)에 더블 클릭 리스너를 추가하는 경우

+0

infowindow를 _marker_에 추가하는 경우 dblclick (또는 click) 이벤트를지도가 아니라 마커에 표시 하시겠습니까? – geocodezip

+0

가능한 [Google지도의 마커에서 두 번 클릭 이벤트를 얻는 방법] 중복 가능 (http://stackoverflow.com/questions/12180102/how-to-get-double-click-event-on-the-google-maps- 마커) –

+0

google.maps.event.addListener (drawingManager, 'dblclick', writeInfo); - 일하지 마라. –

답변

0

, 그것은 google's examples in the documentation에서 나를 위해 수정 된 코드를 작동합니다

function initialize() { 
    var mapOptions = { 
    center: new google.maps.LatLng(-34.397, 150.644), 
    zoom: 8 
    }; 

    var map = new google.maps.Map(document.getElementById('map-canvas'), 
    mapOptions); 

    var drawingManager = new google.maps.drawing.DrawingManager({ 
    drawingMode: google.maps.drawing.OverlayType.MARKER, 
    drawingControl: true, 
    drawingControlOptions: { 
     position: google.maps.ControlPosition.TOP_CENTER, 
     drawingModes: [ 
     google.maps.drawing.OverlayType.MARKER, 
     google.maps.drawing.OverlayType.CIRCLE, 
     google.maps.drawing.OverlayType.POLYGON, 
     google.maps.drawing.OverlayType.POLYLINE, 
     google.maps.drawing.OverlayType.RECTANGLE 
     ] 
    }, 
    markerOptions: { 
      draggable: true, 
      animation: google.maps.Animation.DROP 
    }, 
    circleOptions: { 
     fillColor: '#ffff00', 
     fillOpacity: 1, 
     strokeWeight: 5, 
     clickable: false, 
     editable: true, 
     zIndex: 1 
    }, 
    polylineOptions: { 
     editable: true, 
     geodesic: true 
    }, 
    map: map 
    }); 
    drawingManager.setMap(map); 
    google.maps.event.addListener(drawingManager, 'overlaycomplete', function(event) { 
    if (event.type == google.maps.drawing.OverlayType.CIRCLE) { 
     var radius = event.overlay.getRadius(); 
    } else if (event.type == google.maps.drawing.OverlayType.MARKER) { 
     google.maps.event.addListener(event.overlay, 'dblclick', writeInfo); 
    } else if (event.type == google.maps.drawing.OverlayType.POLYGON) { 
     google.maps.event.addListener(event.overlay, 'dblclick', writeInfo); 
    } else if (event.type == google.maps.drawing.OverlayType.POLYLINE) { 
     google.maps.event.addListener(event.overlay, 'dblclick', writeInfo); 
    } 

    }); 
    google.maps.event.addListener(map, 'dblclick', writeInfo); 
} 

google.maps.event.addDomListener(window, 'load', initialize); 


function writeInfo() { 
     alert("привет!"); 
} 

working fiddle

0

그것은 나에게 도움이 :

google.maps.event.addListener(drawingManager, 'overlaycomplete', function(e) { 
      var allOverlays = all_overlays.push(e); 
      if (e.type != google.maps.drawing.OverlayType.MARKER) { 
      var line = e; 
      line.type = e.type; 
      var newShape = e.overlay; 
      newShape.type = e.type; 

      google.maps.event.addListener(newShape, 'click', function() { 
       setSelection(newShape); 
      }); 
      setSelection(newShape); 
      } 
      if (e.type == google.maps.drawing.OverlayType.MARKER) { 
       var choiceMarker = e.overlay; 
       choiceMarker.type = e.type; 
        google.maps.event.addListener(choiceMarker, 'dblclick', function() { 
         alert(choiceMarker.getPosition()); 
        }); 
      } 
     }); 
관련 문제