【问题标题】:Google Maps: load markers from JSON谷歌地图:从 JSON 加载标记
【发布时间】:2014-05-08 01:11:55
【问题描述】:

我有以下 JS 处理表单,将结果作为 JSON 返回,然后应该将 json 绘制为地图上的标记。尽管我确实收到了 json 响应,但没有绘制任何内容。我对 Javascript 不是很熟悉,所以有人可以告诉我下面的错误是什么吗?

谢谢

JSON:

[
    {
        "lat": "53.598660370500596",
        "lng": "-113.59166319101564"
    }
]

Javascript

$(function () {
    $('#search').click(function () {
        var projectNumber = $('#project_number').val();
        var setdistance = $('#setdistance').val();
        var companyType = $('#company_type').val();

        //syntax - $.post('filename', {data}, function(response){});
        $.post('business_location_get_map.php', {
            project_number: projectNumber,
            setdistance: setdistance,
            company_type: companyType
        }, function (ret) {
            $('#result').html(ret);
        });
    });
});

function initialize() {
    var mapOptions = {
        center: new google.maps.LatLng(53.5435640000, -113.5),
        zoom: 8
    };
    var map = new google.maps.Map(document.getElementById("map_canvas"),
    mapOptions);
}

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

function plot() {
    $.getJSON('business_location_get_map.php', function (data) {
        var location;
        $.each(data, function (key, val) {
            addMarker(key.lat, key.lng);
        });
    });
}

function addMarker(lat, lng) {
    marker = new google.maps.Marker({
        position: new google.maps.LatLng(lat, lng),
        map: map,
        icon: redImage
    });
    markersArray.push(marker);
}

google.maps.event.addDomListener('search', 'click', plot);

编辑:

我变了

(key.lat, key.lng)

(val.lat, val.lng)

我还是一样的结果,

【问题讨论】:

    标签: javascript json google-maps google-maps-api-3


    【解决方案1】:

    问题是关于$.each()

    您将key.latkey.lng 传递给addMarker(),但是key 是数组中当前元素的索引。您必须使用val,因为它是真正的价值:

    $.each(data, function (key, val) {
       addMarker(val.lat, val.lng);
    });
    

    更多关于$.each()的使用信息:https://api.jquery.com/each/

    【讨论】:

    • getJSON 中的简单 console.log 会有所帮助;)
    • 好的,有道理,我现在已经改变了,但我仍然没有得到结果。我会试着弄清楚console.log,我以前从来没有用过,就像我说我不怎么用javascript
    • 仍然没有,但是当我使用控制台时,它说:最后 AddDomListner 的单击方法未定义。我有一个按钮,上面写着 onclick="plot()"。这会是问题吗?
    • 您已经在#search 元素上注册了一个点击事件。为什么不用它来调用plot()函数呢?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-09-13
    • 1970-01-01
    • 1970-01-01
    • 2012-04-23
    • 1970-01-01
    • 1970-01-01
    • 2015-08-22
    相关资源
    最近更新 更多