我正在尝试在“ jQuery UI”选项卡中延迟加载Virtual Earth地图。我还在另一个标签中有一张Google地图。我正在尝试做的是当用户移动任一张地图时,使两张地图都与中心位置匹配。这是我尝试做虚拟地球方面的方法

var vemap;

//Lazy Load the Virtual Earth API
function loadMapControl() {
   var script = document.createElement("script");
   script.setAttribute("src", "http://dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=7.0&onScriptLoad=initMap");
   script.setAttribute("type", "text/javascript");
   document.getElementsByTagName("head")[0].appendChild(script);
};

//Now load the Map
function initMap() {
   var StartPoint = new  Microsoft.Maps.Location(currentLat, currentLng);
   vemap = new Microsoft.Maps.Map(document.getElementById("ve-map-canvas"),
        {credentials:"<creds>",
        center: StartPoint,
        zoom: gemap.getZoom(),
        mapTypeId: Microsoft.Maps.MapTypeId.birdseye,
        disableBirdseye:true,
        showMapTypeSelector:false});

    Microsoft.Maps.Events.addHandler(vemap, 'viewchangeend', veChanged);
};

function veChanged() {
    var localMap = this.target;
    var point = new GeoPoint(localMap.GetCenter().Longitude,    localMap.GetCenter().Latitude);
    $("#lat").val(point.getLatDeg());
    $("#lng").val(point.getLonDeg());
    $("#currentZoom").val(localMap.GetZoomLevel());
    currentLat = localMap.GetCenter().Latitude;
    currentLng = localMap.GetCenter().Longitude;
    currentZoom = localMap.GetZoomLevel();
};


现在,当我更新虚拟地球地图时,会触发veChanged事件,但localMap.GetCenter()失败,并显示“未捕获的TypeError:未定义不是函数”。我也尝试过vemap.GetCenter(),但得到的结果相同。关于如何获得vemap的任何想法?

最佳答案

我认为您的问题是您使用了错误的函数名,尝试使用getCenter()而不是GetCenter()。请注意,第一个字母为小写:

var point = new GeoPoint(localMap.getCenter().logitude, localMap.getCenter().latitude);


请注意,我使用的其他含义词也都有小写的第一个字母。

10-07 16:52