Карта D3.js не загружается

Я работаю над визуализацией d3 (внутри приложения flask), и мне трудно загрузить свою карту. У меня есть файл csv с различными столбцами данных, а также файл json с координатами широты и долготы. Я знаю, что мои пути к файлам верны, но когда я запускаю свое приложение, я нигде не вижу карту. Любая помощь будет принята с благодарностью.

Вот некоторые из моих тегов сценария вверху:

<script src = "https://d3js.org/d3.v3.min.js"></script>
<script src = "https://unpkg.com/d3-geo@1"></script> 
<script src = "https://unpkg.com/d3-geo-polygon@1"></script>
<script src = "https://unpkg.com/topojson@3"></script>
<script src = "https://unpkg.com/topojson-client@3"></script>

<div id = "chart"></div>

Вот мои элементы svg:

var width = 1000, height = 750;

var svg = d3.select("#chart").append("svg")
                        .attr("width", width)
                        .attr("height", height);

var modus = "Map", counter = 0;

var map = svg.append("g");

var cities = svg.append("g"); 

var projection = d3.geo.mercator()
                .scale(500)
                .translate([-500, 475]);

var path = d3.geo.path().projection(projection);

Вот мой CSV-файл:

var data = d3.csv("../static/data/serial_killers/info_v6.csv", 
function(data) {
    data.forEach(function(d) {
        d.DateOfBirth = +d.DateOfBirth;
        d.Latitude = +d.Latitude;
        d.Longitude = +d.Longitude;
        d.NumberOfVictims = +d.NumberOfVictims;
        d.DateOfMurderRevised = +d.DateOfMurderRevised;
        d.DateAtMurder = +d.DateAtMurder;
        //d_id = +d_id;

    });
    console.info(data[0]);
});

Вот мой файл json:

d3.json("../static/data/serial_killers/location.json", function(data) {
console.info("hello i am in the loading function")
    map.selectAll('.geo-path')
    .data(data)
    .enter()
    .append('path')
    .attr('class', 'geo-path')
    .attr('d', path)
    .attr("visibility", "visible")
    .style("stroke-opacity", 1)
    .style("fill-opacity", 0.5);
});


cities.selectAll(".cities")
        .data(data)
        .enter()
        .append("circle")
        .attr("class", "city")
        .attr("id", function(d) { return "id" + d._id;})
        .style("fill-opacity", 0)
        .style("fill", "#ff0000")
        .attr("r", 0)
        .attr("cx", function(d) { return projection([d.Longitude, 
        d.Latitude])[0];})
        .attr("cy", function(d) { return projection([d.Longitude, 
        d.Latitude])[1];});

Вот фрагмент моего файла json:

[
  {
    "Latitude": 15.64624,
    "Longitude": 32.46113,
    "": ""
  },
  {
    "Latitude": 37.67971,
    "Longitude": -121.9076,
    "": ""
  },
  {
    "Latitude": 40.51361,
    "Longitude": -74.25005999999998,
    "": ""
  }
]

Я не уверен, что я путаю свои переменные «данных» или происходит что-то еще. Любая помощь будет принята с благодарностью.

посмотрите в d3 doc версию, которую вы используете v3 / v4 / v5, каков синтаксис функции загрузчика csv и что делает каждый обратный вызов (обратный вызов строки или обратный вызов файла)

rioV8 21.11.2018 15:20

Ваш json должен быть действительным geojson. И если у ваших кругов нет обводки в css, они будут невидимы: r = 0, заливка прозрачная

Andrew Reid 21.11.2018 16:25

@AndrewReid, спасибо. Есть ли способ преобразовать мой json в geojson без необходимости делать это вручную?

William Stevens 21.11.2018 16:48

Здесь есть как минимум две основные проблемы: 1) как упоминалось в @ rioV8, вы должны проверить свою версию (и). Вы используете D3 v3, который поставляется в комплекте с d3.geo. Затем вы смешиваете различные модули (например, d3-geo), которые были разработаны для работы с v5. Вы должны решить либо перейти на версию 5, либо избавиться от отдельных модулей. Вы должны навести порядок. 2) Судя по предоставленному вами коду, вы, похоже, попали в асинхронную ловушку. См .: «Как мне вернуть ответ от асинхронного вызова?»

altocumulus 21.11.2018 16:59
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
4
101
0

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