2013-06-27 62 views
7

我正在使用d3在小冊子地圖上添加svg圈。 我的小提琴在這裏http://jsfiddle.net/nextstopsun/C3U8g/當縮放單張地圖時,SVG圈不會重新定位

我已經添加了一個reset()函數來映射viewreset事件來計算包含所有圓的svg g元素的轉換。該函數在地圖viewreset事件上被調用。

svg.attr("width", topRight[0] - bottomLeft[0]) 
    .attr("height", bottomLeft[1] - topRight[1]) 
    .style("margin-left", bottomLeft[0] + "px") 
    .style("margin-top", topRight[1] + "px"); 
g.attr("transform", "translate(" + -bottomLeft[0] + "," + -topRight[1] + ")"); 

(該代碼是最初從這個例子http://bost.ocks.org/mike/leaflet/

我可以看到,對於克元件變換參數被重新計算,但圓不重新定位(或它們被重新定位錯誤)和Don不對齊地圖tilelayer。 雖然paning地圖一切都很好。 在縮放時需要更改正確的重新定位?

回答

5

除了改造包含界g元素,則還需要重新設置自己圈子的座標:更新的jsfiddle here

circles.attr("cx", function (d) { return project([d.m4312, d.m4311])[0]; }) 
     .attr("cy", function (d) { return project([d.m4312, d.m4311])[1]; });