我有一個特定的問題,以默認的墨卡託投影尺度值縮放行爲,在我的情況是一個相當荒謬的價值(75000),因爲不知何故它是我能夠讓我的TOPOJson地圖成爲除點之外的項目。D3初始縮放默認墨卡託投影尺度
我創建了一個地圖投影,並希望添加縮放和平移。我的功能都可以工作,除了默認的縮放值以外。只要滾動縮放,該值就會跳回到默認投影比例值,而不是基於鼠標滾輪進行縮放。我有一種感覺,原因是爲了讓地圖顯示,我需要使投影比例值真的很高(75000)。
所以在頁面加載時,變焦看起來不錯,像this ......但是當你嘗試平移或或縮小一個鼠標滾輪點擊放大,它跳到this
我試圖限制碼只是投影和縮放邏輯波紋管。
<body>
<script src="//d3js.org/d3.v3.min.js" charset="utf-8"></script></script>
<script src="//d3js.org/topojson.v1.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<div id = "map" style = "float : left; min-width:320px;width :50%;height : 600px;"></div>
<script>
var width = 900,
height = 800;
var projection = d3.geo.mercator()
.center([-73.94, 40.70])
.scale(75000)
.translate([(width/2), (height/2)]);
var svg = d3.select("#map").append("svg")
.attr("viewBox", "0 0 900 800")
.attr("preserveAspectRatio", "xMidYMid meet");
var path = d3.geo.path()
.projection(projection);
var g = svg.append("g")
.attr("transform", "translate(-793.0489643729818,-630.1796382734433)scale(3.01487286910262)");
d3.json("ny.json", function(error, ny) {
g.append("path")
.attr("id", "boroughs")
.datum(topojson.feature(ny, ny.objects.boroughs))
.attr("d", path);
// zoom and pan
var zoom = d3.behavior.zoom()
.on("zoom",function() {
g.attr("transform","translate("+
d3.event.translate.join(",")+")scale("+d3.event.scale+")");
g.selectAll("path")
.attr("d", path.projection(projection));
});
svg.call(zoom)
});
shape文件從這裏下載:http://www1.nyc.gov/site/planning/data-maps/open-data/districts-download-metadata.page 然後,我mapshaper將它轉換 –
你能將'ny.json'文件發佈到某個地方,以便我們可以重新創建您的問題?我喜歡用[jsonblob](https://jsonblob.com/)... – Mark
@Mark啊!我試圖在網上使用json編輯器,但它似乎太大...在這裏你去:https://jsonblob.com/96ada11e-3285-11e7-ae4c-4b5e1959573f –