将标记添加到Ajax请求响应中生成的Google Map中

时间:2018-07-03 03:49:18

标签: jquery ajax google-maps

我有一个Google Map,我想添加表示会员地址位置的标记,但是我有一个不太清楚的小问题。

如果我满足以下条件:

var map = new google.maps.Map(document.getElementById('map'), {
                              center: {lat: -34.397, lng: 150.644},
                              zoom: 8
                            });

                        var marker = new google.maps.Marker({
                          position: {lat: 39.099, lng: -105.129},
                          map: map,
                          title: ''
                        });

以上内容成功创建了地图并成功添加了标记,因此我知道自己处在正确的轨道上。但是当我将脚本编辑为以下内容时:

var map = new google.maps.Map(document.getElementById('map'), {
                              center: {lat: -34.397, lng: 150.644},
                              zoom: 8
                            });

                        $.each(data[1].locations, function(i, item) {
                        var marker = new google.maps.Marker({
                          position: {lat: item.latitude, lng: item.longitude},
                          map: map,
                          title: ''
                        });
                        });

这次,创建了地图,但未显示任何标记(即使以上内容正确响应了适当的坐标,我在控制台中还是遇到以下错误:InvalidValueError: setPosition: not a LatLng or LatLngLiteral: in property lat: not a number

1 个答案:

答案 0 :(得分:0)

确保仅在ajax请求完成后才添加标记。 仅在ajax的成功部分中添加标记。

示例:

$.ajax({
    url:    "ajaxmap.php",
    type : 'GET',
    dataType: 'json',
    success : function(data) {

  $.each(data[1].locations, function(i, item) {
                        var marker = new google.maps.Marker({
                          position: {lat: item.latitude, lng: item.longitude},
                          map: map,
                          title: ''
                        });

}