我想在谷歌地图上显示多个标记。我正在使用每个循环迭代包含纬度和经度的模型列表。但是调用函数并且它不显示地图。
代码:
<div id="map_canvas" style="width: 80%; height: 80%"> </div>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js">
</script>
<script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?
sensor=false"></script>
<script type="text/javascript">
$(document).ready(function () {
alert("working");
var map;
var locations = [];
var options = {
zoom: 14,
center: new google.maps.LatLng(0, 0),
mapTypeId: google.maps.MapTypeId.ROADMAP
};
map = new google.maps.Map($('#map_canvas')[0], options);
@* This is the razor loop *@
@foreach (var item in Model) {
<text>
locations.push(item.latitude, item.longitude);
</text>
}
var i;
for (i = 0; i <= locations.length; i++) {
var latlng = new google.maps.LatLng(locations[i][0], locations[i][1]);
var marker = new google.maps.Marker({
position: latlng,
map: map,
});
}
});
</script>
答案 0 :(得分:1)
这不起作用:
var latlng = new google.maps.LatLng(markerlatLng);
markerlatLng
已经是google.maps.LatLng
,结果将是无效的LatLng。
使用markerlatLng
作为center
- options
此外:您应该将地图创建与循环分开。在循环之前设置中心之前创建地图:
map.setCenter(markerlatLng);
此外:
标记的地图属性必须为map
而不是map_canvas
答案 1 :(得分:0)
你试试这个:
$(document).ready(function () {
var map;
var elevator;
var myOptions = {
zoom: 1,
center: new google.maps.LatLng(0, 0),
mapTypeId: 'terrain'
};
map = new google.maps.Map($('#map_canvas')[0], myOptions);
var addresses = ['Norway', 'Africa', 'Asia','North America','South America'];
for (var x = 0; x < addresses.length; x++) {
$.getJSON('http://maps.googleapis.com/maps/api/geocode/json?address='+addresses[x]+'&sensor=false', null, function (data) {
var p = data.results[0].geometry.location
var latlng = new google.maps.LatLng(p.lat, p.lng);
new google.maps.Marker({
position: latlng,
map: map
});
});
}
});
嵌入了Javascript代码: