使用jquery函数创建一个新映射

时间:2011-05-24 15:41:11

标签: jquery google-maps-api-3

我正在使用谷歌地图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
});

} 

2 个答案:

答案 0 :(得分:1)

您需要将缩放级别的字符串值转换为整数:

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构造函数正确处理它。

答案 1 :(得分:0)

您是否在网页标题中添加了对Google地图脚本的引用?

您在页面加载时是否收到任何javascript错误?

您确定您的服务电话是以正确的格式返回数据吗?它可能是返回XML而不是JSON。

修改

我注意到你正在做var mapDiv = $(“#map-canvas”)[0];将它像阵列一样对待的原因是什么?你是按名字要求的,所以在页面上应该只有一个....