我已使用此代码成功将标记添加到地图中:
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循环?
答案 0 :(得分:2)
是的,你需要第二个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循环来调用每部电影的功能。