Слой Heatmap не отображается на Картах Google - PullRequest
0 голосов
/ 14 декабря 2018

Я пытаюсь отобразить слой тепловой карты на Картах Google, который отражает концентрацию преступности.Я не уверен, что я делаю неправильно, но слой тепловой карты не будет отображаться.Я хочу поместить все мои длинные координаты в массив, так как в нем около 3600 точек.Я попытался создать функцию, которая создает массив (getPoints ()), и затем моя переменная heatmap вызывала функцию.Карты Google не будут ничего отображать - они останутся пустыми.Если я возьму код слоя карты тепла, то он будет работать нормально.Поэтому мне было интересно, правильно ли я храню точки long и lat.

var map;
var place;
var autocomplete;
var baseMapLayer = 1;  // controls which basemap attribute is depicted.  Will change based on dropdown menu value.
var infowindow = new google.maps.InfoWindow();

function initialization() {
    showCrimes();
    initAutocomplete();
}

function showCrimes() {
    $.ajax({
        url: 'HttpServlet',
        type: 'POST',
        data: { "tab_id": "1"},
        success: function(crimes) {
            mapInitialization(crimes);
            setBaseMap();
        },
        error: function(xhr, status, error) {
            alert("An AJAX error ocurred: " + status + "\nError: " + error);
        }
    });
}

function mapInitialization(crimes) {
    var mapOptions = {
        mapTypeId: google.maps.MapTypeId.ROADMAP, // Set the type of Map
    };

    // Render the map within the empty div
    map = new google.maps.Map(document.getElementById('map-canvas'), mapOptions);

    var bounds = new google.maps.LatLngBounds();

    $.each(crimes, function (i, e) {
        var long = Number(e['longitude']);
        var lat = Number(e['latitude']);
        if (long != -1.7976931348623157e+308) {
            var latlng = new google.maps.LatLng(lat, long);
            bounds.extend(latlng);
        }

        // Heatmap layer
        function getPoints() {
            var heatmapData = [];
            heatmapData.push(latlng);
        }


        var heatmap = new google.maps.visualization.HeatmapLayer({
            data: getPoints(),
            dissipating: false,
            map: map
        });


        map.fitBounds(bounds);
        //console.log(bounds);
    });

}

google.maps.event.addDomListener(window, 'load', initialization);

<script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?key=API_KEY&libraries=geometry,places,visualization"></script>

1 Ответ

0 голосов
/ 14 декабря 2018

Я думаю, это потому, что вы объявляете latlng внутри функции и используете его в другой функции

if (long != -1.7976931348623157e+308) {
        var latlng = new google.maps.LatLng(lat, long);
        bounds.extend(latlng);
}
function getPoints(){
var heatmapData = [];
heatmapData.push(latlng);
}

объявляете latlng как экземпляр, который можно проверить.Я думаю, тогда это будет работать

...