从嵌套数组添加谷歌地图标记

Adding google maps marker from nested array

本文关键字:地图 图标 谷歌 添加 嵌套 数组      更新时间:2023-09-26

我使用以下代码成功地将标记添加到地图中:

var film = [
[ "12 Years a Slave",-90.0715323,29.9510658,"2013"],
[ "12 Years a Slave",-90.7197143,30.0110809,"2013"]];
for (i = 0; i < film.length; i++) {  
  marker = new google.maps.Marker({
  position: new google.maps.LatLng(film[i][2], film[i][1]),
});

我已将数组更改为嵌套格式,因为我希望一次只能打开一部电影的标记,而不是总是一次打开所有标记。

var film = [["12 Years a Slave","2013",[[-90.3517469,29.9429828],[-90.1525373,29.9502543]]],
["The Life of Emile Zola","1937",[[-117.7603323,33.5141933],[-118.3387185,34.1486546]]]];

如何一次打开所有标记,或只打开一部电影?我是否需要在此循环中使用第二种类型的 for 循环?

是的,您需要一秒钟的 for 循环来遍历每部电影的位置(因为现在一部电影有超过 1 个位置)。

根据上面的代码,这应该可以解决问题:

// Go through each film
for (i = 0; i < film.length; i++) {
  // Display the film marker.
  displayFilm(film[i])
}
/**
 * Function to display a single film.
 *
 * @param filmData array of film data structured as (name, year, list of positions)
 */
function displayFilm(filmData) {
  var positions = filmData[2];
  // Go through all positions of a film
  for (j = 0; j < positions.length; j++) {
    // Show marker
    marker = new google.maps.Marker({
      position: new google.maps.LatLng(positions[j][1], positions[j][0])
    });
  }
}

要显示单部影片,请使用displayFilm功能。若要显示所有这些,请使用第一个 for 循环,该循环为每部电影调用函数。