使用MVC 4和Google Maps API创建地图应用

在开发过程中,经常需要将地图功能集成到应用程序中。本文将介绍如何使用MVC 4,jQuery和Google Maps API来实现这一功能。

在创建地图应用时,遇到了一些挑战。首先是使用jQuery选择器来链接包含Google地图的div不起作用,必须使用JavaScript的document.getElementById方法。其次是尺寸问题,使用默认尺寸(非常小)对来说不够用,所以增加了宽度和高度。结果发现Google地图对此并不满意。经过一番研究,发现了一个帖子,建议创建一个快速的内页样式,将max-width设置为"none",然后它就可以工作了。

使用代码

创建一个新的MVC 4项目,这将默认包含运行本教程所需的jQuery和其他支持文件的适当链接。

所做的所有工作都在"Index视图"中,所以去那个文件并清理掉不需要的任何HTML等。

<script src="http://maps.google.com/maps/api/js?sensor=true" type="text/javascript"></script> <style> #map_canvas img{max-width:none} </style> <style> .infoDiv { height: 200px; width: 300px; -webkit-user-select: none; background-color: white; } </style>

需要创建一个Razor "SECTION"来包围代码。这样做的原因是让MVC管理脚本在输出HTML文件中的位置。这很重要,以确保事情以正确的顺序加载。

$(document).ready(function() { Initialize(); }); function Initialize() { google.maps.visualRefresh = true; var Liverpool = new google.maps.LatLng(53.408841, -2.981397); var mapOptions = { zoom: 14, center: Liverpool, mapTypeId: google.maps.MapTypeId.G_NORMAL_MAP }; var map = new google.maps.Map(document.getElementById("map_canvas"), mapOptions); } var myLatlng = new google.maps.LatLng(53.40091, -2.994464); var marker = new google.maps.Marker({ position: myLatlng, map: map, title: 'Tate Gallery' }); marker.setIcon('http://maps.google.com/mapfiles/ms/icons/green-dot.png'); var data = [ { "Id": 1, "PlaceName": "Liverpool Museum", "OpeningHours": "9-5, M-F", "GeoLong": "53.410146", "GeoLat": "-2.979919" }, { "Id": 2, "PlaceName": "Merseyside Maritime Museum", "OpeningHours": "9-1,2-5, M-F", "GeoLong": "53.401217", "GeoLat": "-2.993052" }, { "Id": 3, "PlaceName": "Walker Art Gallery", "OpeningHours": "9-7, M-F", "GeoLong": "53.409839", "GeoLat": "-2.979447" }, { "Id": 4, "PlaceName": "National Conservation Centre", "OpeningHours": "10-6, M-F", "GeoLong": "53.407511", "GeoLat": "-2.984683" } ]; $.each(data, function(i, item) { var marker = new google.maps.Marker({ 'position': new google.maps.LatLng(item.GeoLong, item.GeoLat), 'map': map, 'title': item.PlaceName }); marker.setIcon('http://maps.google.com/mapfiles/ms/icons/blue-dot.png'); var infowindow = new google.maps.InfoWindow({ content: '' }); google.maps.event.addListener(marker, 'click', function() { infowindow.open(map, marker); }); });
沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485