projectionStream не является функцией в D3.js v4

Мы работаем над этим сайтом http://bandaultralarga.italia.it/mappa-bul/

На этой странице у нас есть gMap, где мы рисуем несколько полигонов сверху, используя d3(v3) и topoJson.

Теперь мы хотим (хотели бы) перейти на новый v4, чтобы добавить новый дизайн данных, а именно то, что у нас уже было.

Неполадки возникают в функции наложения ниже, где мы переводим координаты в систему Google Map.

Ссылаясь на D3 v4 API Docs, мы перешли от:

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);

1 ответ

Решение

mbostock ответ:

Пожалуйста, прочтите примечания к выпуску d3-geo или CHANGES.md:

"Резервные проекции" - когда вы передаете функцию, а не проекцию на путь. Проекция- больше не поддерживаются. Для географических проекций используйте d3.geoProjection или d3.geoProjectionMutator, чтобы определить собственную проекцию. Для произвольных преобразований геометрии реализуйте интерфейс потока; см. также d3.geoTransform.

Другие вопросы по тегам