Google maps javascript-向gmap标记添加文本

Google maps javascript-向gmap标记添加文本,google-maps,Google Maps,我使用gmap进行地理定位,即在谷歌地图上的特定位置设置标记。 现在我想要实现的是设置标记,一旦用户单击其中一个标记,信息窗口就会打开并显示特定的文本。每个标记都有自己的文本 现在的问题是,我无法确定用户单击了哪个标记,因此无法设置正确的文本 下面是一段代码片段: //**Global variables**/ var thingsOfInterest = new Array(new Array(), new Array(),new Array()); var map =

我使用gmap进行地理定位,即在谷歌地图上的特定位置设置标记。 现在我想要实现的是设置标记,一旦用户单击其中一个标记,信息窗口就会打开并显示特定的文本。每个标记都有自己的文本

现在的问题是,我无法确定用户单击了哪个标记,因此无法设置正确的文本

下面是一段代码片段:

    //**Global variables**/
    var thingsOfInterest = new Array(new Array(), new Array(),new Array());
    var map = null;
    //End Global variables

    //init google map

function initGoogleMaps(){
    map = new google.maps.Map(document.getElementById("map_canvas"));
    var centerMap = new google.maps.LatLng(48.337881,14.320323);
    $('#map_canvas').gmap({'zoom':7,'center': centerMap});
    $('#map_canvas').gmap('option', 'zoom', 10);

   //This is not working on my ios-simulator, no idea why. Anyway....
   forge.geolocation.getCurrentPosition(function(position) {
            alert("Your current position is: "+position);
         }, function(error) {
    });
}
/*End init map*/

/*Set the markers on the map*/
function setMarkers() {
    /* thingsOf Interest contains:
     * thingsOfInterest[i][0] -> the text that the marker should hold
     * thingsOfInterest[i][1] -> the latitude
     * thingsOfInterest[i][2] -> the longitude
     */

    for (var i = 0; i < thingsOfInterest.length; i++) { //Iterate through all things
      var item = thingsOfInterest[i];  //get thing out of array
      var itemLatLng = new google.maps.LatLng(item[1], item[2]);  

      $('#map_canvas').gmap('addMarker', {'position': new google.maps.LatLng(item[1],item[2]) } ).click(function(e) {
                    $('#map_canvas').gmap('openInfoWindow', {'content': 'dummyContent'}, this); ///////SET REAL CONTENT HERE
      });
    }

}
//**全局变量**/
var thingsOfInterest=new Array(new Array(),new Array(),new Array());
var-map=null;
//结束全局变量
//初始化谷歌地图
函数initGoogleMaps(){
map=新的google.maps.map(document.getElementById(“map_canvas”);
var centerMap=new google.maps.LatLng(48.337881,14.320323);
$('map_canvas').gmap({'zoom':7,'center':centerMap});
$('map#u canvas').gmap('option','zoom',10);
//这在我的ios模拟器上不起作用,不知道为什么。无论如何。。。。
forge.geolocation.getCurrentPosition(函数(位置){
警报(“您当前的位置是:“+位置”);
},函数(错误){
});
}
/*结束初始化映射*/
/*在地图上设置标记*/
函数setMarkers(){
/*感兴趣的内容包括:
*thingsOfInterest[i][0]->标记应包含的文本
*感兴趣的东西[i][1]->纬度
*感兴趣的东西[i][2]->经度
*/
对于(var i=0;i
现在,这一切都很好,但我错过的是获取用户在函数()eventHandler中单击的标记。如果我能得到特定的标记,我可以在上面设置文本

我希望这足够清楚

非常感谢您的帮助

谢谢

enne

假设您的伪文本代码正常工作,您可以立即传递文本

$('#map_canvas').gmap('addMarker', {'position': new google.maps.LatLng(item[1],item[2])})
   .click(function(e) {
      $('#map_canvas').gmap('openInfoWindow', {'content': item[0]}, this); 
   });
或者另一种方法是:

function setMarkers() {

    for (var i = 0; i < thingsOfInterest.length; i++) {

        var item = thingsOfInterest[i];  
        var itemLatLng = new google.maps.LatLng(item[1], item[2]);

        var marker = new google.maps.Marker({ position: itemLatLng, map: map });

        google.maps.event.addListener(marker, 'click', function () {
            var infowindow = new google.maps.InfoWindow({ content: item[0] });
            infowindow.open(map, marker);
        });
    }
}
函数setMarkers(){
对于(var i=0;i
假设使用伪文本的代码正常工作,您可以立即传递文本

$('#map_canvas').gmap('addMarker', {'position': new google.maps.LatLng(item[1],item[2])})
   .click(function(e) {
      $('#map_canvas').gmap('openInfoWindow', {'content': item[0]}, this); 
   });
或者另一种方法是:

function setMarkers() {

    for (var i = 0; i < thingsOfInterest.length; i++) {

        var item = thingsOfInterest[i];  
        var itemLatLng = new google.maps.LatLng(item[1], item[2]);

        var marker = new google.maps.Marker({ position: itemLatLng, map: map });

        google.maps.event.addListener(marker, 'click', function () {
            var infowindow = new google.maps.InfoWindow({ content: item[0] });
            infowindow.open(map, marker);
        });
    }
}
函数setMarkers(){
对于(var i=0;i
感谢Michal Klouda的帮助。嗯,第一种方法在imho中不起作用,因为在每个infowindow中总是有项[0]的文本。如果将项[0]替换为项[i],则第二种方法似乎不错。不幸的是,它没有在我的iOS iPhone模拟器中添加标记,我也不知道为什么。@enne87你试过了吗?使用相同的逻辑,所有标记将位于相同的位置。。秒解决方案是我如何在我的项目中做同样的事情,并且知道它正在工作。关于item[i]的事情没有多大意义,因为item已经从迭代数组中拉出。对不起!昨天我有点厌倦了所有的编码,所以我想得不够。你说得绝对正确,第[i]项当然完全是胡说八道。但它仍然需要thingsOfInterest中最后一个条目的文本,这意味着当我尝试第一个和第二个方法时,[0]项总是相同的……找到了答案:感谢Michal Klouda的帮助。嗯,第一种方法在imho中不起作用,因为在每个infowindow中总是有项[0]的文本。如果将项[0]替换为项[i],则第二种方法似乎不错。不幸的是,它没有在我的iOS iPhone模拟器中添加标记,我也不知道为什么。@enne87你试过了吗?使用相同的逻辑,所有标记将位于相同的位置。。秒解决方案是我如何在我的项目中做同样的事情,并且知道它正在工作。关于item[i]的事情没有多大意义,因为item已经从迭代数组中拉出。对不起!昨天我有点厌倦了所有的编码,所以我想得不够。你说得绝对正确,第[i]项当然完全是胡说八道。但它仍然采用thingsOfInterest中最后一个条目的文本,这意味着当我尝试您的第一种和第二种方法时,[0]项总是相同的……找到了答案: