Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/432.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 虚拟地球未捕获类型错误:未定义不是函数_Javascript_Jquery_Bing Maps_Virtual Earth - Fatal编程技术网

Javascript 虚拟地球未捕获类型错误:未定义不是函数

Javascript 虚拟地球未捕获类型错误:未定义不是函数,javascript,jquery,bing-maps,virtual-earth,Javascript,Jquery,Bing Maps,Virtual Earth,我试图在jQueryUI选项卡中延迟加载虚拟地球地图。我还有一个谷歌地图在另一个标签。我想做的是,当用户移动两个地图时,让两个地图匹配中心位置。下面是我如何尝试做虚拟地球的一面 var vemap; //Lazy Load the Virtual Earth API function loadMapControl() { var script = document.createElement("script"); script.setAttribute("src", "http:/

我试图在jQueryUI选项卡中延迟加载虚拟地球地图。我还有一个谷歌地图在另一个标签。我想做的是,当用户移动两个地图时,让两个地图匹配中心位置。下面是我如何尝试做虚拟地球的一面

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();
};
var-vemap;
//延迟加载虚拟地球API
函数loadMapControl(){
var script=document.createElement(“脚本”);
script.setAttribute(“src”http://dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=7.0&onScriptLoad=initMap");
setAttribute(“type”、“text/javascript”);
document.getElementsByTagName(“head”)[0].appendChild(脚本);
};
//现在加载地图
函数initMap(){
var StartPoint=new Microsoft.Maps.Location(currentLat,currentLng);
vemap=new Microsoft.Maps.Map(document.getElementById(“ve地图画布”),
{凭据:“”,
中心:StartPoint,
缩放:gemap.getZoom(),
mapTypeId:Microsoft.Maps.mapTypeId.birdseye,
残疾鸟眼:没错,
showMapTypeSelector:false});
Microsoft.Maps.Events.addHandler(vemap,'viewchangeend',veChanged);
};
函数veChanged(){
var localMap=this.target;
var point=新的地理点(localMap.GetCenter().经度,localMap.GetCenter().纬度);
$(“#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()失败,并显示“UncaughtTypeError:undefined不是一个函数”。我也尝试过vemap.GetCenter(),但得到了相同的结果。关于如何访问vemap有什么想法吗?

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

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

请注意,我使用的其他标识符的第一个字母也是小写。

您确定
这是您需要的吗?也许你们应该有一个参数列表?好吧,我不得不说我不是Javascript专家,但这正是我想要做的。延迟加载虚拟地球api,并在居中/缩放更改时更新变量,因此如果选中“谷歌地图”选项卡,我可以重新居中该地图。我不知道如何添加有帮助的参数。谢谢你的帮助,就是这样,它现在正如我所希望的那样工作。