Joh*_*ann 0 c# asp.net-mvc partial-views google-maps-api-3 razor
我正在尝试使用JSON在部分视图中显示Google地图.我已经在普通视图中尝试了代码,它工作得很好.
我有以下内容: -
部分视图ShowMap.cshtml
@using Microsoft.Web.Helpers
<script src="~/Scripts/jquery-1.8.3.min.js"></script>
<div class="experienceRestrictedText">
@Maps.GetGoogleHtml("1, Redmond Way, Redmond, WA", width: "400", height: "400")
</div>
Run Code Online (Sandbox Code Playgroud)
Index.cshtml(启动部分视图的位置)
$('.modal_link_map').on('click', function (e) {
$('.modal_part').show();
var id = $(this).attr('data-id');
var context = $('#tn_select').load('/Experience/ShowMap?id=' + id, function () {
initSelect(context);
});
e.preventDefault();
return false;
});
Run Code Online (Sandbox Code Playgroud)
控制器动作如下: -
public ActionResult ShowMap()
{
_ItemID = Convert.ToInt32(Request.QueryString["id"]);
viewModel.ExperienceViewModel.Experience = unitOfWork.ExperienceRepository.GetByID(_ItemID);
return PartialView(viewModel);
}
Run Code Online (Sandbox Code Playgroud)
我需要包含其他任何内容才能使用此地图吗?
我不熟悉@Maps.GetGoogleHtml帮助程序,但我担心这个帮助程序包含以下脚本:
<script src="//maps.google.com/maps/api/js?sensor=false" type="text/javascript"></script>
Run Code Online (Sandbox Code Playgroud)
除非此脚本无法异步加载,因为它用于document.write()加载实际的API.要使其工作,您应该指定一个callback参数.以下是您的部分看起来像:
<div class="experienceRestrictedText">
<script src="//maps.google.com/maps/api/js?sensor=false&callback=initialize" type="text/javascript"></script>
<script type="text/javascript">
function initialize() {
var map = new google.maps.Map(document.getElementById("map"), { zoom: 14, center: new google.maps.LatLng(47.652437, -122.132424), mapTypeId: google.maps.MapTypeId['ROADMAP'] });
new google.maps.Geocoder().geocode({ address: '1, Redmond Way, Redmond, WA' }, function (response, status) {
if (status === google.maps.GeocoderStatus.OK) {
var best = response[0].geometry.location;
map.panTo(best);
new google.maps.Marker({ map: map, position: best });
}
});
}
</script>
<div class="map" id="map" style="width:400px; height:400px;"></div>
</div>
Run Code Online (Sandbox Code Playgroud)
注意如何将回调参数传递给http://maps.google.com/maps/api/js脚本,并在此回调中完成映射的实际初始化.
另请注意,我已从部分中删除了jquery脚本.我想jQuery已经加载到你的布局中,因为你似乎正在使用它来附加到.on()处理程序.
作为替代方案,您可以<script src="//maps.google.com/maps/api/js?sensor=false" type="text/javascript"></script>在主视图中@Maps.GetGoogleHtml包含它,但是一旦加载了部分,
帮助程序就会再次包含它.
就个人而言,我并不是那种助手的忠实粉丝,因为他们完全模糊了潜在的电话,让你无法控制和理解正在发生的事情.
| 归档时间: |
|
| 查看次数: |
3180 次 |
| 最近记录: |