MVC4 asp.net在视图中访问kml文件

时间:2013-01-06 15:02:20

标签: google-maps-api-3 asp.net-mvc-4 visual-studio-2012 kml

我在visual studio 2012的MVC4项目中遇到了问题。 我在symfony2中构建了一个后台,在那里我可以显示谷歌地图与从kml文件加载的多边形。

现在我想在asp.net(C#)中做同样的事情......但我的代码似乎无法访问kml文件。

我没有使用模型视图控制器系统来访问我的文件,也许这就是问题......

我在我的项目中创建了一个名为' Kmls'我把我的kml粘在那里(1.kml,2.kml,......) 这是我的观点代码:

@model IEnumerable<SocialGeo.Models.district>
@{
   ViewBag.Title = "Index";
}

<h3>Choose a district first</h3>

<ul class="allDistricts" data-kml="">
    @foreach (var item in Model) {
        @Html.ActionLink(item.district_name, "DistrictNews", new { id=item.district_id})
    }
</ul>

<script type="text/javascript">
  $(document).ready(function () {
    var myOptions = {
        center: new google.maps.LatLng(51.087633, 3.711569),
        zoom: 11,
        mapTypeId: google.maps.MapTypeId.ROADMAP
    }



    var paths =
    {
        imagePath: "@Url.Content("~/Kmls/10.kml")"
    }


    $("section").append('<div class="mapscanvas" id="map_canvas' + 0 + '"></div>');

    map = new google.maps.Map(document.getElementById("map_canvas" + 0), myOptions);

    geoXml = geoXML3.parser({ map: map, singleInfoWindow: true, zoom: false });
    //var jej = @HttpContext.Current.Server.MapPath("~/Kmls/10.kml")

    geoXml.parse(paths.imagePath);

});
</script>

当我在firefox中运行应用程序(调试)时,我在控制台中收到以下错误:

GET: http://localhost:53760/Kmls/10.kml 404NotFound
HTTP error 404 retrieving /Kmls/10.kml in polys.js (line 990)
Unable to retrieve /Kmls/10.kml

我看到地图,但不是我需要的多边形。

我是否也必须使用控制器? 这是我的控制权被称为:

public ActionResult Index()
{
    var districts = db.districts.Include(d => d.city);
    return View(districts.ToList()); 
}

任何帮助都将受到高度赞赏!

1 个答案:

答案 0 :(得分:1)

我认为您的问题可能是,为了在Google地图中加载KML文件(至少对于免费版本),它需要是Web Accessible(即您提供的URL需要可以从Web访问,而不是只在本地开发/生产服务器上)。因此,“/ kmls/10.kml”不是有效的网址,需要“http://myserver/KML”之类的内容。

如下面的评论中所述,此处是类似已回答问题的链接:Google Maps API and KML File LocalHost Development Options