【发布时间】:2017-04-03 23:51:48
【问题描述】:
我有以下代码,它采用谷歌地图,然后在其上附加一个图层,但投影中有一个问题,这给了我一个错误,并且不单独在谷歌地图上显示图层,任何帮助都会受到赞赏。 请注意,我使用的是 d3 的第 4 版。 有什么建议吗?
<script>
var map = new google.maps.Map(d3.select("#map").node(), {
zoom: 7,
center: new google.maps.LatLng(31.5852,36.2384),
mapTypeId: google.maps.MapTypeId.ROADMAP });
d3.json("Export.json", function(error, jordanLevel2) {
if (error) throw error
var overlay = new google.maps.OverlayView();
overlay.onAdd = function() {
var layer = d3.select(this.getPanes().overlayLayer).append("div");
overlay.draw = function() {
layer.select('svg').remove();
var w = 900;
var h = 900;
var overlayProjection = this.getProjection();
// Turn the overlay projection into a d3 projection
var googleMapProjection = function(coordinates) {
var googleCoordinates = new google.maps.LatLng(coordinates[1], coordinates[0]);
var pixelCoordinates = overlayProjection.fromLatLngToDivPixel(googleCoordinates);
return [pixelCoordinates.x, pixelCoordinates.y];
}
var path = d3.geoPath().projection(googleMapProjection);
var svg = layer.append("svg")
.attr('width', w)
.attr('height', h)
var g = svg.append('g')
.attr("id", "mapGroup");
g.selectAll("path")
.data(jordanLevel2.features)
.enter()
.append("path")
.attr("d", path)
.attr('class', 'state selected')
.style('opacity', .7);
}
}
overlay.setMap(map);
});
【问题讨论】:
标签: javascript d3.js