projectionStream在D3.js v4中不是一个函数
projectionStream is not a function in D3.js v4
我们正在做这个网站http://bandaultralarga.italia.it/mappa-bul/
在那个页面上,我们有一个gMap,我们在上面画了一些多边形,使用d3(v3)和topoJson。
现在我们想(想)切换到新的v4添加新的数据可视化设计的页面上,但保持我们已经有。
麻烦出现在下面的叠加函数中,我们将坐标转换为谷歌地图系统。
参考D3 v4 API文档,我们从:
path = d3.geo.path().projection(googleMapProjection);
:
path = d3.geoPath().projection(googleMapProjection);
但是这会产生主题错误(projectionStream不是一个函数)
有什么线索可以让它再次工作吗?
var overlay = new google.maps.OverlayView();
overlay.onAdd = function () {
var div = document.createElement('div');
div.id = 'svg_map';
div.style.borderStyle = 'none';
div.style.borderWidth = '0px';
div.style.position = 'absolute';
this.getPanes().overlayMouseTarget.appendChild(div);
overlay.draw = function () {
var overlayProjection = this.getProjection();
var googleMapProjection = function (coordinates) {
var googleCoordinates = new google.maps.LatLng(coordinates[0], coordinates[1]);
var pixelCoordinates = overlayProjection.fromLatLngToDivPixel(googleCoordinates);
return [pixelCoordinates.x + 4000, pixelCoordinates.y + 4000];
};
path = d3.geoPath().projection(googleMapProjection); // Here is where troubles come
generaOverlay(overlay, datiShape);
};
};
overlay.setMap(map);
mbostock answer:
请阅读d3-geo发布说明或CHANGES.md:
"回退投影"——当你传递一个函数而不是一个投影给path时。不再支持投影。对于地理投影,使用d3。geoProjection或d3。geoProjectionMutator来定义一个自定义投影。对于任意几何变换,实现流接口;参见d3.geoTransform.
相关文章:
- 创建一个类似链接的按钮,并通过Javascript函数打开一个新的弹出窗口
- 我可以在json对象中添加一个函数吗
- Javascript使函数一个接一个地执行
- 是JavaScript中的函数一个对象
- 两个几乎相等的jQuery函数;一个适用于IE,一个不适用于IE
- 两个Javascript函数一个window.onload=Custom.init;和一个window.onload=f
- 使javascript加载函数一个接一个地执行
- 如何通过两个嵌套的匿名函数(一个带有超时的事件处理程序)传递变量
- 为什么我不能让两个jQuery函数一个在另一个里面呢?
- 给函数一个变量名,而不是它的值
- 如何使用嵌入函数(一个滚动页由Pete - peachananr)
- 是否有可能给JavaScript函数一个类型/类?
- 确保两个函数一个接一个地执行,其中第一个函数内部有一个异步调用
- 两个不同的ajax函数一个接一个调用返回相同的值
- jQuery第一次更改函数一个工作
- 给这个函数一个id
- 如何给回调函数一个值一个变量在特定时刻
- 使用回调使两个函数一个接一个地运行
- 两个函数(一个用php)是否可以用“;onclick”;
- 两个几乎相同的函数.一个函数用Queue进行排队.Jquery效果在queued函数上不起作用.为什么