Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/367.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 谷歌地图-自定义JS以输出信息窗口和标记问题_Javascript_Google Maps - Fatal编程技术网

Javascript 谷歌地图-自定义JS以输出信息窗口和标记问题

Javascript 谷歌地图-自定义JS以输出信息窗口和标记问题,javascript,google-maps,Javascript,Google Maps,试图简化我的谷歌地图自定义代码,以放置标记和信息气泡。然而,我遇到了一些问题,我似乎无法调试下面的代码,它目前没有输出任何东西。代码定义lat/long/title和content,然后尝试将它们作为地图上的标记输出 <script type="text/javascript"> function initialize() { var myLatlng = new google.maps.LatLng(20,0); var myOptions = {

试图简化我的谷歌地图自定义代码,以放置标记和信息气泡。然而,我遇到了一些问题,我似乎无法调试下面的代码,它目前没有输出任何东西。代码定义lat/long/title和content,然后尝试将它们作为地图上的标记输出

  <script type="text/javascript">

   function initialize() {
    var myLatlng = new google.maps.LatLng(20,0);
    var myOptions = {
      zoom: 2,
      center: myLatlng,
      mapTypeId: google.maps.MapTypeId.TERRAIN
  }

  var map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);

var countries = [
  {title:'Afghanistan', lat:34.28, lon:69.11, content:"<h2>Afghanistan</h2><p>16 Alumni</p>"},
  {title:'Albania', lat:41.18, lon:19.49, content:"<h2>Albania</h2><p>7 Alumni</p>"},
  {title:'Angola', lat:-8.5, lon:13.15, content:"<h2>Angola</h2><p>9 Alumni</p>"},
  {title:'Antarctica', lat:-80, lon:0, content:"<h2>Antarctica</h2><p>1 Alumnus</p>"},
  {title:'Antigua & Barbuda', lat:17.20, lon:-61.48, content:"<h2>Antigua & Barbuda</h2><p>1 Alumnus</p>"},
  {title:'Argentina', lat:-36.30, lon:-60, content:"<h2>Argentina</h2><p>29 Alumni</p>"},
];

for (i=0;i<countries.length;i++)
{
  c = countries[i];
  marker: new google.maps.Marker({position: new google.maps.LatLng(" + c['lat'] + "," + c['lon'] + "), map: map, title: '" + c['title'] + "'}),
  infowindow: new google.maps.InfoWindow({content: '" + c['content'] + "'});
}

var item;
for (var i=0; i<countries.length; i++) {
    item = countries[i];
    google.maps.event.addListener(item.marker, 'click', makeCallback(item));
}

function makeCallback(country) {
    return function () {
        country.infowindow.open(map, country.marker);
    };
}

函数初始化(){
var mylatng=new google.maps.LatLng(20,0);
变量myOptions={
缩放:2,
中心:myLatlng,
mapTypeId:google.maps.mapTypeId.TERRAIN
}
var map=new google.maps.map(document.getElementById(“map_canvas”),myOptions);
var国家=[
{标题:'Afghanistan',lat:34.28,lon:69.11,内容:“Afghanistan16校友

”, {标题:“阿尔巴尼亚”,拉丁语:41.18,拉丁语:19.49,内容:“阿尔巴尼亚7校友”

“}, {标题:'Angola',lat:-8.5,lon:13.15,内容:“Angola9校友

”, {标题:'南极洲',lat:-80,lon:0,内容:“南极洲1校友”

“}, {标题:'安提瓜和巴布达',lat:17.20,lon:-61.48,内容:“安提瓜和巴布达1名校友

”, {标题:'阿根廷',lat:-36.30,lon:-60,内容:“阿根廷29校友”

“}, ];
对于(i=0;i而言,代码中存在各种印刷和语法错误。此外,不需要在变量位置构造字符串。以下是一个工作版本:

...
var countries = [...];

for (var i = 0; i < countries.length; i++) { 
    var c = countries[i]; 
    c.marker = new google.maps.Marker({
        position: new google.maps.LatLng(c.lat, c.lon), 
        map: map, 
        title: c.title});
    c.infowindow = new google.maps.InfoWindow({content: c.content}); 

    google.maps.event.addListener(c.marker, 'click', makeCallback(c)); 
} 

function makeCallback(country) { 
    return function () { 
        country.infowindow.open(map, country.marker); 
    }; 
}
。。。
var国家=[…];
对于(var i=0;i
wow谢谢,看起来我做错的比我想象的要多,非常感谢你的帮助!我很高兴帮助你。如果你对我的答案感到满意,你可以给我投票(数字上方的箭头-数字将增加)并接受我的答案(数字下方的复选标记-复选标记变为绿色)。
...
var countries = [...];

for (var i = 0; i < countries.length; i++) { 
    var c = countries[i]; 
    c.marker = new google.maps.Marker({
        position: new google.maps.LatLng(c.lat, c.lon), 
        map: map, 
        title: c.title});
    c.infowindow = new google.maps.InfoWindow({content: c.content}); 

    google.maps.event.addListener(c.marker, 'click', makeCallback(c)); 
} 

function makeCallback(country) { 
    return function () { 
        country.infowindow.open(map, country.marker); 
    }; 
}