Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.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地图标记_Javascript_Google Maps_Google Maps Api 3_Google Street View - Fatal编程技术网

Javascript 创建事件侦听器以动态创建google地图标记

Javascript 创建事件侦听器以动态创建google地图标记,javascript,google-maps,google-maps-api-3,google-street-view,Javascript,Google Maps,Google Maps Api 3,Google Street View,我正在尝试创建一个页面,我将用vba与excel集成。我想在单击标记时将事件侦听器添加到标记。我几乎无法为单个标记创建“单击侦听器”,但我无法对使用循环动态创建的多个标记执行此操作 单击标记时,我希望街景更新到新单击标记的位置 我非常感谢你的建议。 多谢各位 这就是我所拥有的(从这里到那里) 简单标记 html,正文,#地图画布{ 身高:100%; 保证金:0; 填充:0; } var标签='abcdefghijklmnopqrstuvxyz'//我 var labelIndex=0//我 v

我正在尝试创建一个页面,我将用vba与excel集成。我想在单击标记时将事件侦听器添加到标记。我几乎无法为单个标记创建“单击侦听器”,但我无法对使用循环动态创建的多个标记执行此操作

单击标记时,我希望街景更新到新单击标记的位置

我非常感谢你的建议。 多谢各位

这就是我所拥有的(从这里到那里)


简单标记
html,正文,#地图画布{
身高:100%;
保证金:0;
填充:0;
}
var标签='abcdefghijklmnopqrstuvxyz'//我
var labelIndex=0//我
var映射;
var全景图;
//这将从服务器端创建
变量标记=[
{lat:39.976784,lng:-75.234347,名称:“标记1”},
{lat:39.977043,lng:-75.235087,名称:“标记2”},
{lat:39.976097,lng:-75.234508,名称:“marker 3”},
{拉丁语:39.977059,液化天然气:-75.233682,名称:“标记4”}
];
var mylatng=new google.maps.LatLng(标记[0].lat,标记[0].lng);
函数初始化(){
//var sv=new google.maps.StreetViewService();
panorama=新的google.maps.StreetViewPanorama(document.getElementById('pano');
变量映射选项={
缩放:16,
中心:myLatlng
}
map=new google.maps.map(document.getElementById('map-canvas'),mapOptions);
变量全景选项={
导航控制:对,
职位:myLatlng,
//pov:{
//标题:34,
//投球:10
//}
};
//将初始街景摄影机设置为地图的中心
新的google.maps.StreetViewPanorama(document.getElementById('pano'),
全景图(可选);
//这是将创建标记的循环
对于(标记中的索引)addMarker(标记[索引]);
函数addMarker(数据){
//创建标记
var marker=new google.maps.marker({
位置:新的google.maps.LatLng(data.lat,data.lng),
地图:地图,
标签:标签[labelIndex++%labels.length],
标题:data.name
});
}
}
google.maps.event.addDomListener(窗口“加载”,初始化);

//将此代码包含到循环中

var infowindow = new google.maps.InfoWindow({
    content: 'info content'
});
google.maps.event.addListener(marker, 'click', function() {
    infowindow.open(map,marker);
});

在这里的函数中(函数(数据){…})(数据)因为您使用了标记数组

function addMarker(data) {
  (function(data){   <<-- New line added 
  // Create the marker
  var marker = new google.maps.Marker({
    position: new google.maps.LatLng(data.lat, data.lng),
    map: map,
    label: labels[labelIndex++ % labels.length],
    title: data.name
  });

  google.maps.event.addListener(marker, 'click', function(){// <<---- New line added
       // Code event listener .... 
  });// <<---- New line added

  })(data); // <<---- New line added
}
函数addMarker(数据){
(功能(数据){
  • 保留对全景的引用:
  • 应该是:

    // Set the initial Street View camera to the center of the map
    panorama = new google.maps.StreetViewPanorama(document.getElementById('pano'), panoramaOptions);
    
  • 标记中更改
    全景图的位置
    ,单击listener
  • 代码片段:

    var标签='ABCDEFGHIJKLMNOPQRSTUVWXYZ';//我
    var labelIndex=0;//me
    var映射;
    var全景图;
    //这将从服务器端创建
    变量标记=[{
    拉脱维亚:39.976784,
    液化天然气:-75.234347,
    名称:“标记1”
    }, {
    拉脱维亚:39.977043,
    液化天然气:-75.235087,
    名称:“标记2”
    }, {
    拉脱维亚:39.976097,
    液化天然气:-75.234508,
    名称:“标记3”
    }, {
    拉脱维亚:39.977059,
    液化天然气:-75.233682,
    名称:“标记4”
    }];
    var mylatng=new google.maps.LatLng(标记[0].lat,标记[0].lng);
    函数初始化(){
    //var sv=new google.maps.StreetViewService();
    panorama=新的google.maps.StreetViewPanorama(document.getElementById('pano');
    变量映射选项={
    缩放:16,
    中心:myLatlng
    }
    map=new google.maps.map(document.getElementById('map-canvas'),mapOptions);
    变量全景选项={
    导航控制:对,
    职位:myLatlng,
    //pov:{
    //标题:34,
    //投球:10
    //}
    };
    //将初始街景摄影机设置为地图的中心
    pano=new google.maps.StreetViewPanorama(document.getElementById('pano'),
    全景图(可选);
    //这是将创建标记的循环
    对于(标记中的var索引)addMarker(标记[索引]);
    函数addMarker(数据){
    //创建标记
    var marker=new google.maps.marker({
    位置:新的google.maps.LatLng(data.lat,data.lng),
    地图:地图,
    标签:标签[labelIndex++%labels.length],
    标题:data.name
    });
    google.maps.event.addListener(标记,'click',函数(e){
    pano.setPosition(marker.getPosition());
    });
    }
    }
    google.maps.event.addDomListener(窗口“加载”,初始化);
    html,
    身体
    #地图画布{
    身高:100%;
    保证金:0;
    填充:0;
    }
    
    
    您希望街景指向哪个标题?您的标记单击侦听器在哪里?这与我的问题没有直接关系,但非常感谢您的快速响应。非常感谢。您的方法也很有效。但是geozipcode的更好、更干净。下面是我如何提取它的。google.maps.event.addListener(标记,'click',function(){var panoramaOptions={position:new google.maps.LatLng(data.lat,data.lng)}new google.maps.StreetViewPanorama(document.getElementById('pano'),panoramaOptions);
    // Set the initial Street View camera to the center of the map
    new google.maps.StreetViewPanorama(document.getElementById('pano'), panoramaOptions);
    
    // Set the initial Street View camera to the center of the map
    panorama = new google.maps.StreetViewPanorama(document.getElementById('pano'), panoramaOptions);
    
    google.maps.event.addListener(marker,'click', function(e) {
       pano.setPosition(marker.getPosition());
    });