我从ajax获取我的lat和lan值。这是我的示例代码。实际上我从c#code获取我的lat和lan值。如果我将值直接传递给javascrip,它可以正常工作。如果我通过ajax使用它不起作用。任何人都知道如何解决这个问题。
var locations='';
$.ajax({
type: "POST",
url: 'http://www.ajax.com',
async: false,
success: function (msg) {
locations = msg[0];
/*below result is what i am getting from ajax */
//locations=["<a href='#' target='_blank'><b class='blue'>XXX</b></a>", 53.2279753, -1.6115431, 1], ["<a href='#' target='_blank'><b class='blue'>YYY</b></a>", 51.9935422, -1.7021487, 2]
},
error: function () {
}
});
locations = [locations];
var map = new google.maps.Map(document.getElementById('map'), {
zoom: 8,
center: new google.maps.LatLng(-39.92, 151.25),
mapTypeId: google.maps.MapTypeId.ROADMAP
});
var infowindow = new google.maps.InfoWindow();
var marker, i;
var markers = new Array();
for (i = 0; i < locations.length; i++) {
marker = new google.maps.Marker({
position: new google.maps.LatLng(locations[i][1], locations[i][2]),
map: map
});
markers.push(marker);
google.maps.event.addListener(marker, 'click', (function (marker, i) {
return function () {
infowindow.setContent(locations[i][0]);
infowindow.open(map, marker);
}
})(marker, i));
}
// Create a new viewpoint bound
var bounds = new google.maps.LatLngBounds();
// Go through each...
$.each(markers, function (index, marker) {
bounds.extend(marker.position);
});
// Fit these bounds to the map
map.fitBounds(bounds);
//AutoCenter();
答案 0 :(得分:0)
如果长/纬度未定义或不是数字,则会发生这种情况。您可能需要在创建标记之前检查它。
请在此处查看已接受的答案:https://stackoverflow.com/a/17231733/1141089
更新:由于您的问题似乎是将字符串传递给标记函数,因此您可以通过两种方式解决它。
要么你用这样的javascript解决它:
var value = parseFloat("55.2421410");
或者在你的C#代码中(返回JSON)如下:
var value = float.Parse("55.2421410", CultureInfo.InvariantCulture.NumberFormat);
所以你的Javascript代码看起来像这样(如果你选择用JS解决它)
var latitude = parseFloat(locations[i][1])
var longitude = parseFloat(locations[i][2]);
//Do some error handling here, look for NaN, undefined etc.
var marker = new google.maps.Marker({
position: new google.maps.LatLng(latitude, longitude),
map: map
});