Javascript 谷歌地图-ajax更新图标

Javascript 谷歌地图-ajax更新图标,javascript,php,ajax,function,google-maps-api-3,Javascript,Php,Ajax,Function,Google Maps Api 3,我有一个在地图上绘制地图的脚本,一旦绘制了地图,我的脚本就会执行ajax请求以获取图标,希望用新的标记图标更新地图 这就是我到目前为止所做的: for( i = 0; i < markers.length; i++ ) { var position = new google.maps.LatLng(markers[i][1], markers[i][2]); bounds.extend(position); $.ajax({ type: 'GET', ur

我有一个在地图上绘制地图的脚本,一旦绘制了地图,我的脚本就会执行ajax请求以获取图标,希望用新的标记图标更新地图

这就是我到目前为止所做的:

for( i = 0; i < markers.length; i++ ) {
    var position = new google.maps.LatLng(markers[i][1], markers[i][2]);
    bounds.extend(position);

$.ajax({
    type: 'GET',
    url: 'http://localhost/new/cqc/get_rating.php',
    data: 'location_id=<?php echo $row['location_id']; ?>',
    async: false,
    success: function (response) {
        icons=[response];
    }
});


    marker = new google.maps.Marker({
    position: position,
        scaledSize : new google.maps.Size(10,10),
        map: map,
        draggable: true,
        title: markers[i][0],
        icon: icons[i][0]
    });
for(i=0;i
这不起作用,图标不会出现


亲切问候

这很容易。您只需修复代码的定位

以下是我是如何做到这一点的:

首先,我确保声明了所有必要的变量。我已经为
标记提供了数组内容,以便在加载
映射后可以使用它。然后我添加了数组
图标
,以供以后使用,并添加了
映射
变量来处理映射类

var icons = [];
var markers = [
  ['Chicago', 41.878114,-87.629798],
  ['Detroit', 42.331427,-83.045754],
  ['Kansas', 39.099727,-94.578567],
  ['Des Moines', 41.600545,-93.609106],
  ['Colorado Springs', 38.833882,-104.821363],
  ['Nashville', 36.162664,-86.781602],
  ['Indianapolis', 39.768403,-86.158068],
  ['Lexington', 38.040584,-84.503716],
];
接下来,我开始绘制地图:(这个例子以芝加哥为中心)

地图现在必须显示在页面上。之后,我们将运行
ajax
调用,该调用用于填充
图标
数组。(我不确定你的
ajax
代码是否有效,因为我无法测试它)

填充
图标
数组后,现在可以继续循环。在循环中,必须是包含
图标
和创建标记的函数的变量(在此代码中,我已将标记函数分隔开):


现在应该可以了!请检查此项以查看实际的代码。(不要忘记阅读注释以更好地了解我所做的工作!)

是的,在ajax调用中调用marker内部成功。请您详细说明一下。对不起,删除图标变量的'var'关键字。不-没有运气
function initMap() {
  var location = new google.maps.LatLng(latlng.lat, latlng.lng)
  map = new google.maps.Map(document.getElementById('map'), {
    center: {lat: 41.878114, lng: -87.629798},
    zoom: 5
  });
    $.ajax({
       type: 'GET',
       url: 'http://localhost/new/cqc/get_rating.php',
       data: 'location_id=<?php echo $row["location_id"]; ?>',
       async: false,
       success:function(response){
         icons=[response];
       }
    });
[
  ['icon1.png'],
  ['icon2.png'],
  ['icon3.png'],
  ['icon4.png'],
  ['icon5.png'],
  ['icon6.png'],
  ['icon7.png'],
  ['icon8.png']
];
  for( var i=0; i < markers.length; i++){
    var image = {
      url: icons[i][0],
      scaledSize: new google.maps.Size(50, 32)
    };
    create_marker({lat:markers[i][1],lng:markers[i][2]}, i, image);
  }
}
function create_marker(position, i, image){
  marker = new google.maps.Marker({
    position: position,
    map: map,
    draggable: true,
    title: markers[i][0],
    icon: image
  });
}