Для L oop с кнопкой быстрого ввода - PullRequest
0 голосов
/ 17 февраля 2020

У меня есть карта с кнопкой, и когда кнопка нажата, она предлагает пользователю ввести единицу измерения. Исходя из того, что вводит пользователь, во всплывающем окне должна отображаться плотность населения, основанная на этой единице измерения (например, миля, км, гектар).

Я понял, что это работает как функция, но теперь мне нужно преобразовать его в a для l oop (согласно требованиям к домашней работе), и он не работает должным образом. Во-первых, маркеры отображаются на карте еще до того, как кнопка нажата, и первоначально у меня было «Плотность населения: + плотность [i] ...» под всплывающим окном var, и оно работало, но отображало только плотность населения в гектаре ( из оператора else).

var cities = ['Fort Wayne', 'Indianapolis', 'South Bend'];
var coord = [[41.0793, -85.1394], [39.7684, -86.1581], [41.6764, -86.2520]];
var pop = [265904, 872680, 102245];
var areaMi = [110.62, 368.2, 41.46];
var areaKm = [286.5, 954, 107.38];
var areaHa = [28700, 96350, 10830];
var density = [];
var pleaseWork = [];

var options = {
        center: [40.4864, -86.1336],
        zoom: 7.4
}

var map = L.map('map', options);

var tiles = L.tileLayer('http://{s}.tiles.wmflabs.org/bw-mapnik/{z}/{x}/{y}.png', {
    maxZoom: 18,
    attribution: '&copy; <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a>'
});
map.addLayer(tiles);

var button = document.getElementById("map-cities"); 

button.addEventListener("click", function() {

    do {
        var units = prompt('Enter the units for calculating density', 'Enter "mile", "km" or "hectare".');
    } while (units != "mile" && units != "km" && units != "hectare");

    pleaseWork.push(units);
});

for(var i = 0; i < cities.length; i++) {

    if (pleaseWork[i] === "km") { 
        popup += "<Population density</b>: "+density.push(pop[i]/areaKm[i])}
    else if (pleaseWork[i] === "mile") { 
        popup += "<Population density</b>: "+density.push(pop[i]/areaMi[i])}
    else {popup += "<Population density</b>: "+density.push(pop[i]/areaHa[i])};

    var popup = "<b>"+cities[i]+"</b><br>"
            +"<b>population</b>: "+pop[i].toLocaleString();


    L.marker([coord[i][0],coord[i][1]])
            .addTo(map)   
            .bindPopup(popup);

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...