Javascript,从数组中读取变量
Javascript, reading variable from array
我在地图上显示我的自定义标记时遇到了一些问题,为了为每个位置显示不同的标记,我从也包含该位置的数组中获取图像,例如,这是我的代码:
var examplearray = [
[43, 52.81421, 5.935412, 'image3']
];
var image1 = 'mapsicons/alpha.png';
var image2 = 'mapsicons/beta.png';
var image3 = 'mapsicons/charlie.png';
for (var i = 0; i < examplearray.length; i++) {
var samplemarker = examplearray [i]
var marker = new google.maps.Marker({
position: new google.maps.LatLng (samplemarker[1], samplemarker[2]),
map: map,
icon: samplemarker[3],
zIndex: samplemarker[0]
});
}
我看不出这里出了什么问题,但它不显示图像,为了清楚起见,图像位于正确的位置并且它们确实有效,如果我将 "samplemarker[3]" 更改为例如, image1 图标确实显示正确,将 "image3" 从数组更改为图像位置 (mapsicons/charlie.png) 也是如此,似乎从数组数据到变量数据的转换不起作用.希望您能帮帮我,先谢谢了!
我花了一些时间来理解这个想法。如果将 icon: samplemarker[3]
替换为 icon: this[samplemarker[3]]
会怎样?
另外两个选项:
将图标的URL添加到数组中。代替:
var examplearray = [
[43, 52.81421, 5.935412, 'image3']
];
使用:
var examplearray = [
[43, 52.81421, 5.935412, 'mapsicons/charlie.png']
];
- 引用数组中的变量而不是使用带有名称的字符串:
而不是:
var examplearray = [
[43, 52.81421, 5.935412, 'image3']
];
使用:
var examplearray = [
[43, 52.81421, 5.935412, image3]
];
代码片段(选项 1):
function initialize() {
var map = new google.maps.Map(
document.getElementById("map_canvas"), {
center: new google.maps.LatLng(37.4419, -122.1419),
zoom: 13,
mapTypeId: google.maps.MapTypeId.ROADMAP
});
var examplearray = [
[43, 52.81421, 5.935412, 'http://maps.google.com/mapfiles/ms/micons/yellow.png']
];
var bounds = new google.maps.LatLngBounds();
for (var i = 0; i < examplearray.length; i++) {
var samplemarker = examplearray[i];
var marker = new google.maps.Marker({
position: new google.maps.LatLng(samplemarker[1], samplemarker[2]),
map: map,
icon: samplemarker[3],
zIndex: samplemarker[0]
});
bounds.extend(marker.getPosition());
}
map.fitBounds(bounds);
}
google.maps.event.addDomListener(window, "load", initialize);
html,
body,
#map_canvas {
height: 100%;
width: 100%;
margin: 0px;
padding: 0px
}
<script src="https://maps.googleapis.com/maps/api/js"></script>
<div id="map_canvas"></div>
代码片段(选项 2):
function initialize() {
var map = new google.maps.Map(
document.getElementById("map_canvas"), {
center: new google.maps.LatLng(37.4419, -122.1419),
zoom: 13,
mapTypeId: google.maps.MapTypeId.ROADMAP
});
var image1 = 'http://maps.google.com/mapfiles/ms/micons/blue.png';
var image2 = 'http://maps.google.com/mapfiles/ms/micons/green.png';
var image3 = 'http://maps.google.com/mapfiles/ms/micons/yellow.png';
var examplearray = [
[43, 52.81421, 5.935412, image3]
];
var bounds = new google.maps.LatLngBounds();
for (var i = 0; i < examplearray.length; i++) {
var samplemarker = examplearray[i];
var marker = new google.maps.Marker({
position: new google.maps.LatLng(samplemarker[1], samplemarker[2]),
map: map,
icon: samplemarker[3],
zIndex: samplemarker[0]
});
bounds.extend(marker.getPosition());
}
map.fitBounds(bounds);
}
google.maps.event.addDomListener(window, "load", initialize);
html,
body,
#map_canvas {
height: 100%;
width: 100%;
margin: 0px;
padding: 0px
}
<script src="https://maps.googleapis.com/maps/api/js"></script>
<div id="map_canvas"></div>
我在地图上显示我的自定义标记时遇到了一些问题,为了为每个位置显示不同的标记,我从也包含该位置的数组中获取图像,例如,这是我的代码:
var examplearray = [
[43, 52.81421, 5.935412, 'image3']
];
var image1 = 'mapsicons/alpha.png';
var image2 = 'mapsicons/beta.png';
var image3 = 'mapsicons/charlie.png';
for (var i = 0; i < examplearray.length; i++) {
var samplemarker = examplearray [i]
var marker = new google.maps.Marker({
position: new google.maps.LatLng (samplemarker[1], samplemarker[2]),
map: map,
icon: samplemarker[3],
zIndex: samplemarker[0]
});
}
我看不出这里出了什么问题,但它不显示图像,为了清楚起见,图像位于正确的位置并且它们确实有效,如果我将 "samplemarker[3]" 更改为例如, image1 图标确实显示正确,将 "image3" 从数组更改为图像位置 (mapsicons/charlie.png) 也是如此,似乎从数组数据到变量数据的转换不起作用.希望您能帮帮我,先谢谢了!
我花了一些时间来理解这个想法。如果将 icon: samplemarker[3]
替换为 icon: this[samplemarker[3]]
会怎样?
另外两个选项:
将图标的URL添加到数组中。代替:
var examplearray = [ [43, 52.81421, 5.935412, 'image3'] ];
使用:
var examplearray = [
[43, 52.81421, 5.935412, 'mapsicons/charlie.png']
];
- 引用数组中的变量而不是使用带有名称的字符串:
而不是:
var examplearray = [
[43, 52.81421, 5.935412, 'image3']
];
使用:
var examplearray = [
[43, 52.81421, 5.935412, image3]
];
代码片段(选项 1):
function initialize() {
var map = new google.maps.Map(
document.getElementById("map_canvas"), {
center: new google.maps.LatLng(37.4419, -122.1419),
zoom: 13,
mapTypeId: google.maps.MapTypeId.ROADMAP
});
var examplearray = [
[43, 52.81421, 5.935412, 'http://maps.google.com/mapfiles/ms/micons/yellow.png']
];
var bounds = new google.maps.LatLngBounds();
for (var i = 0; i < examplearray.length; i++) {
var samplemarker = examplearray[i];
var marker = new google.maps.Marker({
position: new google.maps.LatLng(samplemarker[1], samplemarker[2]),
map: map,
icon: samplemarker[3],
zIndex: samplemarker[0]
});
bounds.extend(marker.getPosition());
}
map.fitBounds(bounds);
}
google.maps.event.addDomListener(window, "load", initialize);
html,
body,
#map_canvas {
height: 100%;
width: 100%;
margin: 0px;
padding: 0px
}
<script src="https://maps.googleapis.com/maps/api/js"></script>
<div id="map_canvas"></div>
代码片段(选项 2):
function initialize() {
var map = new google.maps.Map(
document.getElementById("map_canvas"), {
center: new google.maps.LatLng(37.4419, -122.1419),
zoom: 13,
mapTypeId: google.maps.MapTypeId.ROADMAP
});
var image1 = 'http://maps.google.com/mapfiles/ms/micons/blue.png';
var image2 = 'http://maps.google.com/mapfiles/ms/micons/green.png';
var image3 = 'http://maps.google.com/mapfiles/ms/micons/yellow.png';
var examplearray = [
[43, 52.81421, 5.935412, image3]
];
var bounds = new google.maps.LatLngBounds();
for (var i = 0; i < examplearray.length; i++) {
var samplemarker = examplearray[i];
var marker = new google.maps.Marker({
position: new google.maps.LatLng(samplemarker[1], samplemarker[2]),
map: map,
icon: samplemarker[3],
zIndex: samplemarker[0]
});
bounds.extend(marker.getPosition());
}
map.fitBounds(bounds);
}
google.maps.event.addDomListener(window, "load", initialize);
html,
body,
#map_canvas {
height: 100%;
width: 100%;
margin: 0px;
padding: 0px
}
<script src="https://maps.googleapis.com/maps/api/js"></script>
<div id="map_canvas"></div>