Javascript 我怎样才能在一个循环中创建谷歌地图标记,比如;Marker1"&引用;Marker2";

Javascript 我怎样才能在一个循环中创建谷歌地图标记,比如;Marker1"&引用;Marker2";,javascript,google-maps,google-maps-markers,Javascript,Google Maps,Google Maps Markers,很抱歉那个新手的问题,但我没有发现任何关于这个问题的想法 我想在谷歌地图上创建4个标记(或更多,但这里是4个)。我通过get ajax请求获得信息,并使用JSON进行响应。我可以创建这些标记,但每个标记的信息窗口都有问题 下面是我尝试的代码: function readDevices(output){ // Get an array for the 4 devices with guid 42421 42422 42423 and 42424 var arrayOfDev

很抱歉那个新手的问题,但我没有发现任何关于这个问题的想法

我想在谷歌地图上创建4个标记(或更多,但这里是4个)。我通过get ajax请求获得信息,并使用JSON进行响应。我可以创建这些标记,但每个标记的信息窗口都有问题

下面是我尝试的代码:

    function readDevices(output){
// Get an array for the 4 devices with guid 42421 42422 42423 and 42424
        var arrayOfDevices = new Array();
        $.each(output.data, function(key, value){
            $.each(value, function(deviceKey, deviceValue){
                if(deviceKey == 'guid' && deviceValue >= 42421 && deviceValue <= 42424){
                    arrayOfDevices.push(value); // add the entire object in the tab
                }
            });
        });

        for(var i = 0; i < arrayOfDevices.length; i++){
            var guid = arrayOfDevices[i]["guid"];
            var latitude = arrayOfDevices[i]["latitude"];
            var longitude = arrayOfDevices[i]["longitude"];
            var name = arrayOfDevices[i]["name"];
            var coord = new google.maps.LatLng(latitude, longitude);

            var contentString = '<div id="content">'+
                '<form method="get" action="manual" id="form-new">'+
                    '<button type="submit" id="new-button" name="'+guid+'" class="btn new-btn">Manual</button>'+
                '</form>'+
                '</div>';

            var infowindow = new google.maps.InfoWindow({
                content: contentString
            });

            var marker = new google.maps.Marker({
                position: coord,
                title: name
            });
            marker.setMap(map);
            google.maps.event.addListener(marker, 'click', function() {
                infowindow.open(map, marker);
            });
        }
    }
。。。但也许有一些技巧可以做这样的事情

我希望这是清楚的^ ^'

谢谢你们的帮助,伙计们!:-)

回答后请更正代码!多亏了他。

function addMarker(markerData, map){
    var contentString = '<div id="content">'+
        '<form method="get" action="manual" id="form-new">'+
            '<button type="submit" id="new-button" name="'+markerData["guid"]+'" class="btn new-btn">Manual</button>'+
        '</form>'+
        '</div>';

    var infowindow = new google.maps.InfoWindow({
        content: contentString
    });
    var LatLng = new google.maps.LatLng(markerData["latitude"], markerData["longitude"]);
    var marker = new google.maps.Marker({
        position: LatLng,
        map: map
    });
    google.maps.event.addListener(marker, 'click', function() {
        infowindow.open(map, marker);
    });
}

function readDevices(output){
    var arrayOfDevices = new Array();
    var markers = new Array();
    $.each(output.data, function(key, value){
        $.each(value, function(deviceKey, deviceValue){
            if(deviceKey == 'guid' && deviceValue >= 42421 && deviceValue <= 42424){
                arrayOfDevices.push(value);
            }
        });
    });

    for(var i = 0; i < arrayOfDevices.length; i++){
        var guid = arrayOfDevices[i]["guid"];
        var latitude = arrayOfDevices[i]["latitude"];
        var longitude = arrayOfDevices[i]["longitude"];
        var name = arrayOfDevices[i]["name"];
        var coord = new google.maps.LatLng(latitude, longitude);
        markers.push(addMarker(arrayOfDevices[i], map));
    }
}
函数addMarker(markerData,map){
var contentString=''+
''+
“手册”+
''+
'';
var infowindow=new google.maps.infowindow({
内容:contentString
});
var LatLng=new google.maps.LatLng(markerData[“纬度”]、markerData[“经度”]);
var marker=new google.maps.marker({
位置:LatLng,
地图:地图
});
google.maps.event.addListener(标记'click',函数(){
信息窗口。打开(地图、标记);
});
}
函数读取设备(输出){
var arrayOfDevices=新数组();
var markers=新数组();
$.each(输出数据、函数(键、值){
$.each(值、函数(设备键、设备值){

如果(deviceKey=='guid'&&deviceValue>=42421&&deviceValue,由于无法生成这样的变量,因此不可能执行此操作。但可以生成一个数组,在for循环中填充如下标记:

var markers = new Array();    
for (var i = 0; i < ArrayWithYourResultYouWantGenerateTheMarkersFrom.length; ++i) {
    markers.push(addMarker(ArrayWithYourResultYouWantGenerateTheMarkersFrom.[i], map));
}

public function addMarker(markerData, map){
    var LatLng = new google.maps.LatLng(markerData.lat, markerData.lon);
    var marker = new google.maps.Marker({
        position: LatLng,
        map: map,
}
var markers=new Array();
对于(var i=0;i
好的,在对我的代码进行一些更新后,它就可以工作了。我已经编辑了我的帖子,您将能够看到更改。非常感谢!很高兴我能提供帮助!:)
var markers = new Array();    
for (var i = 0; i < ArrayWithYourResultYouWantGenerateTheMarkersFrom.length; ++i) {
    markers.push(addMarker(ArrayWithYourResultYouWantGenerateTheMarkersFrom.[i], map));
}

public function addMarker(markerData, map){
    var LatLng = new google.maps.LatLng(markerData.lat, markerData.lon);
    var marker = new google.maps.Marker({
        position: LatLng,
        map: map,
}