Javascript 尝试基于不同的数据库查询动态确定标记图像

Javascript 尝试基于不同的数据库查询动态确定标记图像,javascript,google-maps,google-maps-api-3,Javascript,Google Maps,Google Maps Api 3,使用谷歌地图api的v3,我可以看到美国。我在pg数据库中的2个地址查询中转换为lat和lng的位置设置了标记。我试图根据地址来自哪个查询结果来区分出现哪个标记图像。我已经基于这些查询成功创建了两个对象,它们分别记录,但是,我无法使用这些对象的源来确定显示哪些标记 var labels = ''; var iconBase = 'green.png'; var iconBaseRed = 'red.png'; var xhr = new XMLHttpRequest(); xhr.onread

使用谷歌地图api的v3,我可以看到美国。我在pg数据库中的2个地址查询中转换为lat和lng的位置设置了标记。我试图根据地址来自哪个查询结果来区分出现哪个标记图像。我已经基于这些查询成功创建了两个对象,它们分别记录,但是,我无法使用这些对象的源来确定显示哪些标记

var labels = '';
var iconBase = 'green.png';
var iconBaseRed = 'red.png';

var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function() {

if (xhr.readyState == 4) {
var arr = JSON.parse(xhr.responseText);
console.log(xhr.responseText);
if(Array.isArray(arr)){
showMarkers(arr);
}
}
}
xhr.open('GET', 'markers.php', true);
xhr.send();

function showMarkers(locations){
var markers = locations.map(function(location, i) {
return new google.maps.Marker({
position: location,
icon: iconBase,
label: labels[i % labels.length]
});
});

var markerCluster = new MarkerClusterer(map, markers,
        {imagePath: 'https://developers.google.com/maps/documentation/javascript/examples/markerclusterer/m'});
  }


var xhrred = new XMLHttpRequest();
xhrred.onreadystatechange = function() {

if (xhrred.readyState == 4) {
var arrred = JSON.parse(xhrred.responseText);
console.log(xhrred.responseText);
if(Array.isArray(arrred)){
showMarkers(arrred);
}
}
}
xhrred.open('GET', 'markersred.php', true);
xhrred.send();


function showMarkers(locations){
var markersRed = locations.map(function(locationred, i) {
return new google.maps.Marker({
position: locationred,
icon: iconBaseRed,
label: labels[i % labels.length]
});
});

var markerClusterRed = new MarkerClusterer(map, markersRed,
        {imagePath: 'https://developers.google.com/maps/documentation/javascript/examples/markerclusterer/m'});

  }
我有为每个XMLHttpRequest设置单独变量的方法,这就是我创建多个JSON对象的方法。然后,我尝试对showMarker函数执行相同的操作,但它不起作用。这就是我的问题。。。感谢您的帮助

这里是测试的链接(请参阅控制台日志以获取数据)


您会注意到它只显示iconBaseRed。

如果我理解正确,您正在进行两个不同的ajax调用,每个调用都返回一个位置数组。现在,您需要显示一个不同的标记图标,具体取决于您从哪个ajax调用进行绘制

我将标记图标作为参数传递给函数:

function showMarkers(locations, theIcon){
    var markers = locations.map(function(location, i) {
        return new google.maps.Marker({
            position: location,
            icon: theIcon,
            label: labels[i % labels.length]
    });
});
然后让每个ajax结果调用
showmarks
都有自己的图标:

showMarkers(arr, iconBase);
showMarkers(arrred, iconBaseRed);