2012-08-14 3 views
0

example에 따라 마커 변수에 .on ("click"...을 추가) 마커 선택을 추가하려고합니다. 그러나 마우스를 Google지도 캔버스 위로 가져 가면 드래그 할 수있는 손이 생기고 그 곳에서 svg 요소를 선택할 수 없습니다.D3 요소를 선택하는 D3 Google지도

D3 요소를 클릭 할 수 있도록 해당 기능을 (임시로) 비활성화 할 수 있습니까?

+0

에서 찾을 수 있습니다 어쩌면 당신은 점점 시도 할 수 지도의 전체/일부 요소를 [선택] (https://github.com/mbostock/d3/wiki/Selections)하고 핸들러를 빈 함수로 덮어 쓰시겠습니까? 'd3.selectAll ("% gmaps elements %"). on ("drag", function() {return})' – alm

답변

3

저는 지금 이와 같은지도를 작성 중입니다. 나는 구글의 마커 (오히려 D3 SVG 원)를 사용하지 않은하지만 난 마우스 오버/클릭 발견/등 이벤트는지도의 overlayMouseTarget 층에있는 개체에 있어야했다 :

var overlay = new google.maps.OverlayView(); 

overlay.onAdd = function() { 

    var layer = d3.select(this.getPanes().overlayMouseTarget) 
     .append("div") 
     .attr("class", "providers"); 
      ... 
} 

내가 d3js에 gMaps 데모를 생각합니다. org는 다른 레이어를 사용합니다.

+0

감사합니다. [bl.ocks.org의 Google지도 + d3] (https://bl.ocks.org/mbostock/899711)과 같은 사례는 클릭 이벤트를받지 않는 'overlayLayer'지도 레이어를 사용하는 경우가 많습니다. 또한 [devopers.google.com에 대한 문서] (https://developers.google.com/maps/documentation/javascript/customoverlays#initialize)는 'overlayMouseTarget' 및'floatPane '레이어 만 DOM 이벤트를 수신 함을 확인합니다. – dennisschagt

1

var overlay = new google.maps.OverlayView();를 사용할 수 있습니다. overlay.onAdd 기능은

overlay.onAdd = function() { 
    var layer = d3.select(this.getPanes().overlayMouseTarget) 
     .append("div") 
     .attr("class", "stations"); 
    } 

지도에 우리의 오버레이를 결합하는 사용자 정의 마커

overlay.drawoverlay.setMap() 무승부 ...

더 많은 정보가 https://developers.google.com/maps/documentation/javascript/overlays