gpt4 book ai didi

javascript - Bing map 与 ASP.NET MVC 4.5 集成

转载 作者:行者123 更新时间:2023-12-01 03:47:40 25 4
gpt4 key购买 nike

我在 map 上放置图钉时遇到问题。我正在使用 Bing map ,我想在上面显示一些坐标。我已经按照 youtube 上的教程进行操作,但仍然无法成功。

链接在这里https://www.youtube.com/watch?v=uVeuib8_MWw&t=2s

这就是我得到的!在我的类(class)模型中,我得到了

    using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace Map.Models
{
public class Locations
{
public string latitude { get; set;}
public string longitude { get; set;}

public Locations(string latitude, string longitude)
{
this.latitude = latitude;
this.longitude = longitude;
}
}
}

在我的 Controller 中,我有:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
namespace Map.Controllers
{
public class HomeController : Controller
{
public ActionResult Index()
{
return View();
}

public ActionResult GetLocations()
{
var locations = new List<Models.Locations>()
{
new Models.Locations("12.505353","55.335292"),
new Models.Locations("13.505353","55.485292"),
new Models.Locations("13.655353","55.665292")

};
return Json(locations, JsonRequestBehavior.AllowGet);
}


}
}

最后是 View 。这是 map 和图钉。

@{
ViewBag.Title = "Home Page";
}
<script src="~/Scripts/jquery-1.10.2.min.js"></script>
<script type="text/javascript" src="http://ecn.dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=7.0"></script>
<script type="text/javascript">

$(document).ready(function () {

var map = null;
function LoadMap() {
map = new Microsoft.Maps.Map(
document.getElementById('myMap'),
{
credentials: "Bing map key"
});

}
LoadMap();

$('#btnShowLocations').click(function () {
var url = "/Home/GetLocations";
$.getJSON(url, null, function (data) {
$.each(data, function (index, LocationData) {

var pushpin = new Microsoft.Maps.pushpin(map.getCenter(), null);
pushpin.setLocation(new Microsoft.Maps.Location(
LocationData.latitude,
LocationData.longitude));

map.entities.push(pushpin);
map.setView({
zoom: 4, center: new Microsoft.Maps.Location(23.505353, 78.485292)
});

});

});
});
});
</script>

<h2>Bing Map integration in ASP.NET</h2>
<input type="button" id="btnShowLocations" value ="Show All Locations" />

<div id="myMap" style="position:relative; width:600px; height:600px;">


</div>

map 正在运行,我没有收到任何错误。我的问题是,当我按下按钮时什么也没有发生。我想要的是,当按下按钮时,给定坐标上应该有 3 个图钉。

非常感谢您的阅读!我希望我能让它发挥作用!

最佳答案

一些问题和建议:

  • 主要问题是您的纬度和经度值是字符串,并且永远不会解析为 float /数字。因此, map 在需要数字时会获取位置的字符串值。
  • 您的代码使用的是 Bing map V7,不久前已被 V8 取代。 V7 的生命周期已接近尾声,将于 6 月底关闭。这是 V8 的新 map 脚本 URL:http://www.bing.com/api/maps/mapcontrol
  • document.ready 会在 map 脚本加载之前很久触发,因为它是异步加载的。事实上,document.ready 有时会在整个页面加载之前触发,这意味着您的 map div 可能不可用。我建议使用 map 脚本UR的回调参数:例如:http://www.bing.com/api/maps/mapcontrol?callback=LoadMap
  • 您正在循环中设置 map View ,这应该可以工作,但会导致大量额外的刷新,从而降低加载性能。
  • 一些建议:
    • 将图钉添加到数组中,然后将该数组添加到 map 中。这将减少所需的刷新次数。
    • 将脚本移动到页面底部并最后调用 map 脚本 URL,因为它是异步加载的。本地图脚本被缓存并且您按“刷新”时,回调会立即被调用,并且通常在加载其余代码之前调用。将此行代码移至底部可以让您的页面以最快的速度加载。

以下是对代码的一些建议修改:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace Map.Models
{
public class Locations
{
public double latitude { get; set;}
public double longitude { get; set;}

public Locations(double latitude, double longitude)
{
this.latitude = latitude;
this.longitude = longitude;
}
}
}

您的 Controller :

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace Map.Controllers
{
public class HomeController : Controller
{
public ActionResult Index()
{
return View();
}

public ActionResult GetLocations()
{
var locations = new List<Models.Locations>()
{
new Models.Locations(12.505353,55.335292),
new Models.Locations(13.505353,55.485292),
new Models.Locations(13.655353,55.665292)
};
return Json(locations, JsonRequestBehavior.AllowGet);
}
}
}

您的观点:

@{
ViewBag.Title = "Home Page";
}

<h2>Bing Map integration in ASP.NET</h2>
<input type="button" id="btnShowLocations" value ="Show All Locations" />

<div id="myMap" style="position:relative; width:600px; height:600px;"></div>

<script src="~/Scripts/jquery-1.10.2.min.js"></script>
<script type="text/javascript">
var map = null;

function LoadMap() {
map = new Microsoft.Maps.Map('#myMap', {
credentials: "Bing map key"
});
}

$('#btnShowLocations').click(function () {
var url = "/Home/GetLocations";
$.getJSON(url, null, function (data) {
var pins = [];

$.each(data, function (index, LocationData) {
var pushpin = new Microsoft.Maps.Pushpin(new Microsoft.Maps.Location(
LocationData.latitude,
LocationData.longitude));

pins.push(pushpin);
});

map.entities.push(pins);

map.setView({
zoom: 4, center: new Microsoft.Maps.Location(23.505353, 78.485292)
});
});
});
</script>
<script type="text/javascript" src="https://www.bing.com/api/maps/mapcontrol?callback=LoadMap" async defer></script>

关于javascript - Bing map 与 ASP.NET MVC 4.5 集成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43455725/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com