问题描述
|
我正在使用Google Maps v3,我想创建一个与活动关联的新地图,但是我不知道为什么不起作用,请查看我的代码。
注意我调试代码并很好地解决了问题,即地图未显示
$(document).ready(initialize);
var map;
function initialize() {
x = $(\".comboMap\");
x.change(buildMap);
}
function buildMap(){
$.ajax({
async: false,type: \"POST\",url: \"SaveIndicators.aspx/findMapParameters\",data: \"{idMapa: \'\" + $(\".comboMap\").val() + \"\'}\",contentType: \"application/json; charset=utf-8\",dataType: \"json\",success: response
});
}
/***Sets the values in the maP****/
function response(values) {
var location = values.d.split(\",\");
var lat = parseFloat(location[0]);
var lng = parseFloat(location[1]);
var latLng = new google.maps.LatLng(lat,lng);
var mapDiv = $(\"#map-canvas\")[0];
map = new google.maps.Map(mapDiv,{
center: latLng,zoom: location[2],mapTypeId: google.maps.MapTypeId.ROADMAP,disableDefaultUI: true
});
}
解决方法
您需要将缩放级别的字符串值转换为整数:
function response(values) {
var location = values.d.split(\",\");
var lat = parseFloat(location[0]);
var lng = parseFloat(location[1]);
var zoom = parseInt(location[2]);
var latLng = new google.maps.LatLng(lat,lng);
var mapDiv = $(\"#map_canvas\")[0];
map = new google.maps.Map(mapDiv,{
center: latLng,zoom: zoom,mapTypeId: google.maps.MapTypeId.ROADMAP,disableDefaultUI: true
});
}
我本以为它将通过字符串传递值,但事实并非如此。我必须使用parseInt()来创建一个整数,以使Map构造函数正确对待它。
,您是否在页面标题中包含了对Google Maps脚本的引用?
页面加载时是否遇到任何JavaScript错误?
您确定服务电话以正确的格式返回数据吗?它可能会返回XML而不是JSON。
编辑:
我注意到您正在执行var mapDiv = $(\“#map-canvas \”)[0];将其视为数组的原因是什么?您是按名称要求的,所以无论如何页面上都应该只有一个。