Javascript Bing地图无法正确显示
我是书呆子。我想上传一张地图,显示每顿晚餐的地理信息。我定义了一个名为“Map”的JS文件。和“地图”局部视图。然后,我在DinPerform视图中渲染“贴图”局部视图。但是当我运行项目时,地图没有显示出来。并向我显示了以下错误:Javascript Bing地图无法正确显示,javascript,asp.net-mvc,bing-maps,Javascript,Asp.net Mvc,Bing Maps,我是书呆子。我想上传一张地图,显示每顿晚餐的地理信息。我定义了一个名为“Map”的JS文件。和“地图”局部视图。然后,我在DinPerform视图中渲染“贴图”局部视图。但是当我运行项目时,地图没有显示出来。并向我显示了以下错误: Unhandled exception at line 149, column 9 in http://localhost:52372/Dinner/Edit/14 0x800a1391 - Microsoft JScript runtime error: 'Cen
Unhandled exception at line 149, column 9 in http://localhost:52372/Dinner/Edit/14
0x800a1391 - Microsoft JScript runtime error: 'Center' is undefined
下面显示了相关代码以及我的问题
地图js:
var map = null;
var points = [];
var shapes = [];
var center = null;
function LoadMap(latitude, longitude, onMapLoaded) {
map = new VEMap('theMap');
options = new VEMapOptions();
options.EnableBirdseye = false;
// Makes the control bar less obtrusize.
map.SetDashboardSize(VEDashboardSize.Small);
if (onMapLoaded != null)
map.onLoadMap = onMapLoaded;
if (latitude != null && longitude != null) {
center = new VELatLong(latitude, longitude);
}
map.LoadMap(center, null, null, null, null, null, null, options);
}
function LoadPin(LL, name, description) {
var shape = new VEShape(VEShapeType.Pushpin, LL);
//Make a nice Pushpin shape with a title and description
shape.SetTitle("<span class=\"pinTitle\"> " + escape(name) + "</span>");
if (description !== undefined) {
shape.SetDescription("<p class=\"pinDetails\">" +
escape(description) + "</p>");
}
map.AddShape(shape);
points.push(LL);
shapes.push(shape);
}
function FindAddressOnMap(where) {
var numberOfResults = 20;
var setBestMapView = true;
var showResults = true;
map.Find("", where, null, null, null,
numberOfResults, showResults, true, true,
setBestMapView, callbackForLocation);
}
function callbackForLocation(layer, resultsArray, places,
hasMore, VEErrorMessage) {
clearMap();
if (places == null)
return;
//Make a pushpin for each place we find
$.each(places, function (i, item) {
description = "";
if (item.Description !== undefined) {
description = item.Description;
}
var LL = new VELatLong(item.LatLong.Latitude,
item.LatLong.Longitude);
LoadPin(LL, item.Name, description);
});
//Make sure all pushpins are visible
if (points.length > 1) {
map.SetMapView(points);
}
//If we've found exactly one place, that's our address.
if (points.length === 1) {
$("#Latitude").val(points[0].Latitude);
$("#Longitude").val(points[0].Longitude);
}
}
function clearMap() {
map.Clear();
points = [];
shapes = [];
}
var-map=null;
var点=[];
变量形状=[];
var中心=null;
功能加载图(纬度、经度、加载时){
地图=新的VEMap(“地图”);
选项=新的VEMapOptions();
options.EnableBirdseye=false;
//使控制栏不那么突出。
map.SetDashboardSize(VEDashboardSize.Small);
如果(加载时!=null)
map.onLoadMap=未加载;
if(纬度!=null和经度!=null){
中心=新高度(纬度、经度);
}
LoadMap(中心、空、空、空、空、空、空、空、空、选项);
}
函数LoadPin(LL、名称、描述){
var shape=新的VEShape(VEShapeType.Pushpin,LL);
//制作一个带有标题和描述的漂亮图钉形状
SetTitle(“+escape(name)+”);
如果(说明!==未定义){
shape.SetDescription(“”+
转义(描述)+“
”;
}
map.AddShape(shape);
点。推(LL);
形状。推(形状);
}
函数FindAddressOnMap(其中){
var numberOfResults=20;
var setBestMapView=true;
var showResults=true;
map.Find(“),其中,null,null,null,
numberOfResults,showResults,true,true,
setBestMapView,callbackForLocation);
}
函数调用位置(图层、结果数组、位置、,
hasMore,VEErrorMessage){
clearMap();
if(places==null)
返回;
//为我们找到的每个地方做一个图钉
$。每个(位置、功能(i、项目){
description=“”;
如果(item.Description!==未定义){
描述=项目。描述;
}
var LL=新高度(item.LatLong.Latitude,
经度);
LoadPin(LL、项目名称、说明);
});
//确保所有的图钉都可见
如果(点长度>1){
map.SetMapView(点);
}
//如果我们只找到一个地方,那就是我们的地址。
如果(points.length==1){
$(“#纬度”).val(点[0]。纬度);
$(“#经度”).val(点[0]。经度);
}
}
函数clearMap(){
map.Clear();
点数=[];
形状=[];
}
地图局部视图:
@model NerdDinner.Models.Dinner
<script src="http://dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=6.2" type="text/javascript"></script>
<script src="/Scripts/Map.js" type="text/javascript"></script>
<div id="theMap">
</div>
<script type="text/javascript">
$(document).ready(function () {
var latitude = @Model.Latitude;
var longitude = @Model.Longitude;
if ((latitude == 0) || (longitude == 0))
LoadMap();
else
LoadMap(latitude, longitude, mapLoad);
});
function mapLoad()
{
var title = "@Html.Encode(Model.Title)"
var address = "@Html.Encode(Model.Address)"
LoadPin(Center,title,address);
map.setZoomLevel(14);
}
</script>
@model NerdDinner.Models.Dinner
$(文档).ready(函数(){
var latitude=@Model.latitude;
var longitude=@Model.longitude;
如果((纬度==0)| |(经度==0))
LoadMap();
其他的
负荷图(纬度、经度、负荷图);
});
函数mapLoad()
{
var title=“@Html.Encode(Model.title)”
var address=“@Html.Encode(Model.address)”
LoadPin(中心、标题、地址);
地图。setZoomLevel(14);
}
DinnerPerform视图:
@model NerdDinner.Models.DinnerFormViewModel
<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>
@using (Html.BeginForm()) {
@Html.ValidationSummary(true)
<fieldset>
<legend>Dinner</legend>
<div class="editor-label">
@Html.LabelFor(model => model.Dinner.Title)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Dinner.Title)
@Html.ValidationMessageFor(model => model.Dinner.Title)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.Dinner.Latitude)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Dinner.Latitude)
@Html.ValidationMessageFor(model => model.Dinner.Latitude)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.Dinner.Longitude)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Dinner.Longitude)
@Html.ValidationMessageFor(model => model.Dinner.Longitude)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.Dinner.EventDate)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Dinner.EventDate)
@Html.ValidationMessageFor(model => model.Dinner.EventDate)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.Dinner.ContactPhone)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Dinner.ContactPhone)
@Html.ValidationMessageFor(model => model.Dinner.ContactPhone)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.Dinner.Address)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Dinner.Address)
@Html.ValidationMessageFor(model => model.Dinner.Address)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.Dinner.Country)
</div>
<div class="editor-field">
@Html.DropDownList("Country", @Model.Countries)
@Html.ValidationMessageFor(model => model.Countries)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.Dinner.HostedBy)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Dinner.HostedBy)
@Html.ValidationMessageFor(model => model.Dinner.HostedBy)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.Dinner.Description)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Dinner.Description)
@Html.ValidationMessageFor(model => model.Dinner.Description)
</div>
<p>
<input type="submit" value="Save" />
</p>
<div id="mapDiv">
@{Html.RenderPartial("Map", Model.Dinner);}
</div>
</fieldset>
<script type="text/javascript">
$(document).ready(function () {
$("#Address").blur(function (evt) {
$("#Latitude").val("");
$("#Longitude").val("");
var address = jQuery.trim($("#Address").val());
if (address.length < 1)
return;
FindAddressOnMap(address);
});
});
</script>
}
@model NerdDinner.Models.viewmodel
@使用(Html.BeginForm()){
@Html.ValidationSummary(true)
晚餐
@LabelFor(model=>model.Dinner.Title)
@EditorFor(model=>model.Dinner.Title)
@Html.ValidationMessageFor(model=>model.Dinner.Title)
@LabelFor(model=>model.Dinner.Latitude)
@EditorFor(model=>model.Dinner.Latitude)
@Html.ValidationMessageFor(model=>model.Dinner.Latitude)
@LabelFor(model=>model.Dinner.Longitude)
@EditorFor(model=>model.Dinner.Longitude)
@Html.ValidationMessageFor(model=>model.Dinner.Longitude)
@LabelFor(model=>model.Dinner.EventDate)
@EditorFor(model=>model.Dinner.EventDate)
@Html.ValidationMessageFor(model=>model.Dinner.EventDate)
@LabelFor(model=>model.Dinner.ContactPhone)
@EditorFor(model=>model.Dinner.ContactPhone)
@Html.ValidationMessageFor(model=>model.Dinner.ContactPhone)
@LabelFor(model=>model.Dinner.Address)
@EditorFor(model=>model.Dinner.Address)
@Html.ValidationMessageFor(model=>model.Dinner.Address)
@LabelFor(model=>model.Dinner.Country)
@Html.DropDownList(“Country”,@Model.Countries)
@Html.ValidationMessageFor(model=>model.Countries)
@LabelFor(model=>model.Dinner.HostedBy)
@EditorFor(model=>model.Dinner.HostedBy)
@Html.ValidationMessageFor(model=>model.Dinner.HostedBy)
@LabelFor(model=>model.Dinner.Description)
@EditorFor(model=>model.Dinner.Description)
@Html.ValidationMessageFor(model=>model.Dinner.Description)
@{Html.RenderPartial(“Map”,Model.Dinner);}
$(文档).ready(函数(){
$(“#地址”).blur(函数(evt){
$(“#纬度”).val(“”);
$(“#经度”).val(“”);
var address=jQuery.trim($(“#address”).val();
如果(地址长度<1)
返回;
FindAddressOnMap(地址);
});
});
}
我认为这方面可能是你的问题:
function mapLoad()
{
var title = "@Html.Encode(Model.Title)"
var address = "@Html.Encode(Model.Address)"
LoadPin(Center,title,address); //this line
map.setZoomLevel(14);
}
我没有看到在该范围内的任何地方定义一个名为“Center”的变量。那是149行吗
Unhandled exception at line 149 ...
0x800a1391 - Microsoft JScript runtime error: 'Center' is undefined
谢谢我仔细检查了我的鳕鱼