Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从嵌套的google maps标记数组获取标记位置_Javascript_Arrays_Google Maps_Phonegap Build - Fatal编程技术网

Javascript 从嵌套的google maps标记数组获取标记位置

Javascript 从嵌套的google maps标记数组获取标记位置,javascript,arrays,google-maps,phonegap-build,Javascript,Arrays,Google Maps,Phonegap Build,I应用程序中的一个功能,可在单击按钮时向地图添加标记,该标记还允许用户以可编辑元素的形式输入信息,并可根据请求删除标记 var markers = []; counter = 0; function addMarker(position) { counter++; var bridgeIcon = new google.maps.MarkerImage("img/map_markers/warning_map_marker.png", null, null, null);

I应用程序中的一个功能,可在单击按钮时向地图添加标记,该标记还允许用户以可编辑元素的形式输入信息,并可根据请求删除标记

var markers = [];

counter = 0;

function addMarker(position) {
counter++;

    var bridgeIcon = new google.maps.MarkerImage("img/map_markers/warning_map_marker.png", null, null, null);
    var marker = new google.maps.Marker({
        position: new google.maps.LatLng(position.coords.latitude,position.coords.longitude),
        map: map,
        title: "Hello!!",
        draggable: true,
        animation: google.maps.Animation.DROP,
        icon: bridgeIcon,
        id: counter
    });

    markers.push(marker);

        //Content structure of info Window for the Markers
        var contentString = '<div class="marker-info-win">' +
            '<h3>Marker Information</h3>' +
            '<div class="warning-title" contenteditable="true" data-text="Warning Title"/></div>'+
            '<i class="fa fa-pencil"></i>' +
            '<div class="warning-additional-info" contenteditable="true" data-text="Warning Additional Information"></div>'+
            '<i class="fa fa-pencil"></i>' +
            '<br/><button id="deleteButton" name="remove-marker" class="remove-marker" title="Remove Marker" data-id="'+ counter +'">Remove Marker</button></div>';

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

        //add click event listener to marker which will open infoWindow          
        google.maps.event.addListener(marker, 'click', function() {
            infowindow.open(map,this); // click on marker opens info window 
        });

google.maps.event.addListener(infowindow, 'domready', function () {
        var button = document.getElementById('deleteButton');
        var id = parseInt(button.getAttribute('data-id'));  
        button.onclick = function() {
            deleteMarker(id);
        };
    });
}

function deleteMarker(markerId) {
   for (var i=0; i<markers.length; i++) {
        if (markers[i].id === markerId) {

            markers[i].setMap(null);
        }
    }
}

使用纯数据创建另一个数组,并放置所需的所有信息。因此,您将得到如下结果:

var markersData = []
在循环内创建标记时,请添加索引:

var marker = new google.maps.Marker({
    position: latlng,
    map: googleMap,
    title: 'Hello World!',
    labelContent: "A",
    labelAnchor: new google.maps.Point(3, 30),
    labelClass: "labels",
    labelInBackground: false,
    index: i
});
markersData.push(marker);
然后在处理程序中,您可以通过

google.maps.event.addListener(marker, 'click', function () {
    var info = markersData[this.index];
    ...
});
var marker = new google.maps.Marker({
    position: latlng,
    map: googleMap,
    title: 'Hello World!',
    labelContent: "A",
    labelAnchor: new google.maps.Point(3, 30),
    labelClass: "labels",
    labelInBackground: false,
    index: i
});
markersData.push(marker);
google.maps.event.addListener(marker, 'click', function () {
    var info = markersData[this.index];
    ...
});