2012-08-14 130 views
0

根據這個example,我試圖添加標記選擇,(即將.on(「click」...)添加到標記變量中)。但是,當您將鼠標放在Google地圖畫布上時,您會看到可以拖動的手,並且無法使用它選擇任何svg元素。D3,Google地圖,選擇d3元素

有沒有辦法(暫時)禁用該功能,以便您可以點擊D3元素?

+0

發現也許你可以嘗試讓[選擇](https://github.com/mbostock/d3/wiki/Selections)地圖的所有/某些元素,並用空函數覆蓋處理程序?就像這樣''d3.selectAll(「%gmaps elements%」)。on(「drag」,function(){return})' – alm 2012-08-15 08:00:17

回答

3

我正在製作這樣的地圖。我沒有使用谷歌的標誌(而D3 SVG圈),但我發現,鼠標懸停/點擊的/ etc事件必須是在地圖的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 2018-01-22 15:30:14

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.draw

overlay.setMap()我們覆蓋綁定到地圖...

更多信息,可以在https://developers.google.com/maps/documentation/javascript/overlays