C#ASP.NET MVC项目和Google Maps:如何使用C#List 中的值填充JavaScript数组
我有这样一个类:
public class Markers { public double latitude { get; set; } public double longitude { get; set; } //Constructors and Methods //(...) }
在我的控制器上,我有一个带有标记列表的ActionResult,我像这样添加纬度和经度
List listM = new List(); //NOTE: this is outside of my ActionResult, no problem with that. //(...) listM.Add(new Markers(value[0], value[1])); //NOTE: value[0] is my lat and value[1] is my longitude //(...)
最后我将我的列表返回到视图:
return (listM);
现在在视图上,我需要访问数据并填充数组,以便我可以在谷歌地图上显示标记。
如何用我的列表中的位置lat中的标记来填充数组?
@using ProjectName.Models @model List ... ... //How can I add a GoogleMap Marker ? var markersArray = []; @foreach(var item in Model) { //can't use google.maps.Marker inside this foreach =( }
注意:这是我通过点击地图在该arrays上添加标记的方法。
function addMarker(location) { var marker = new google.maps.Marker({ draggable: true, animation: google.maps.Animation.DROP, position: location, title: 'Bomb', map: map, icon: bomb }); markersArray.push(marker); }
问题2:在@Leo解决方案之后,标记仍未在地图上显示!
var map; var geocoder; var markersArray = []; var geoMarker; var bomb = new google.maps.MarkerImage('Content/Images/Pins/bomb.png', new google.maps.Size(32, 37), new google.maps.Point(0, 0), new google.maps.Point(22, 44) ); function initialize() { var mapOptions = { center: new google.maps.LatLng(41.287739, -7.738992), zoom: 16, mapTypeId: google.maps.MapTypeId.ROADMAP, }; map = new google.maps.Map(document.getElementById("map-canvas"),mapOptions); @foreach(var item in Model) { var locations = google.maps.LatLng('@item.latitude', '@item.longitude', false); addMarker(locations); } geocoder = new google.maps.Geocoder(); for (var i = 0; i < markersArray.length; i++) { markersArray[i].setMap(map); } geoMarker = new GeolocationMarker(map); geoMarker.setCircleOptions({ fillColor: '#808080' }); google.maps.event.addListenerOnce(geoMarker, 'position_changed', function () { map.setCenter(this.getPosition()); map.fitBounds(this.getBounds()); }); google.maps.event.addListener(geoMarker, 'geolocation_error', function (e) { alert('There was an error obtaining your position. Message: ' + e.message); }); geoMarker.setMap(map); google.maps.event.addDomListener(window, 'load', initialize); google.maps.event.addListener(map, 'click', function (event) { addMarker(event.latLng); }); google.maps.event.addListener(map, 'zoom_changed', function () { var zoomLevel = map.getZoom(); //map.setCenter(myLatLng); document.getElementById('mapzoom').innerHTML = 'Zoom: ' + zoomLevel; }); } function showAddress() { alert("Vai navegar para outro endereço!"); var address = document.getElementById('txtAddress').value; geocoder.geocode({ 'address': address }, function (results, status) { if (status == google.maps.GeocoderStatus.OK) { map.setCenter(results[0].geometry.location); var marker = new google.maps.Marker({ map: mp, position: results[0].geometry.location }); } else { alert('error: ' + status); } }); } function addMarker(location) { var marker = new google.maps.Marker({ draggable: true, animation: google.maps.Animation.DROP, position: location, title: 'Bomba', map: map, icon: bomb }); markersArray.push(marker); } function setAllMap(map) { for (var i = 0; i < markersArray.length; i++) { markersArray[i].setMap(map); } } function clearMarkers() { setAllMap(null); } function showMarkers() { setAllMap(map); } function deleteMarkers() { clearMarkers(); markersArray = []; } function loadScript() { var script = document.createElement('script'); script.type = 'text/javascript'; script.src = 'https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false&' + 'callback=initialize'; document.body.appendChild(script); } window.onload = loadScript; if (!navigator.geolocation) { alert('Your browser does not support geolocation'); }
试试这个…..
第二个问题
我不得不仔细查看你的代码,发现了3个问题……其中一个你已经提到过了。 其他的是你复制变量名而你没有实例化一个新对象。 现在改变这个….
@foreach(var item in Model) { var locations = google.maps.LatLng('@item.latitude', '@item.longitude', false); addMarker(locations); }
对……
@foreach(var item in Model) { addMarker(new google.maps.LatLng(parseFloat('@item.latitude'), parseFloat('@item.longitude'))); }
让我知道事情的后续