Как загрузить маркеры multipla для Google map из базы данных с помощью ASP.NET/C#/JAVASCRIPT
привет,
я не могу показать несколько маркеров в google maps из базы данных, пытаясь получить значения широты и долготы из базы данных, пожалуйста, помогите. я пытаюсь с последних 2 дней
вот оба кода c#/js.
с уважением
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Copy of Default.aspx.cs" Inherits="_Default" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>Show/Add multiple markers to Google Maps from database in asp.net website</title> <style type="text/css"> html { height: 100% } body { height: 100%; margin: 0; padding: 0 } #map_canvas { height: 100% } </style> <script type="text/javascript" src = "https://maps.googleapis.com/maps/api/js?key=xxxxxxxx&sensor=false"> </script> <script type="text/javascript"> function initialize() { var markers = JSON.parse('<%=ConvertDataTabletoString() %>'); var mapOptions = { center: new google.maps.LatLng(markers[0].lat, markers[0].lng), zoom: 5, mapTypeId: google.maps.MapTypeId.ROADMAP // marker:true }; var infoWindow = new google.maps.InfoWindow(); var map = new google.maps.Map(document.getElementById("map_canvas"), mapOptions); for (i = 0; i < markers.length; i++) { var data = markers[i] var myLatlng = new google.maps.LatLng(data.lat, data.lng); var marker = new google.maps.Marker({ position: myLatlng, map: map, title: data.title }); (function(marker, data) { // Attaching a click event to the current marker google.maps.event.addListener(marker, "click", function(e) { infoWindow.setContent(data.description); infoWindow.open(map, marker); }); })(marker, data); } } </script> </head> <body onload="initialize()"> <form id="form1" runat="server"> <div id="map_canvas" style="width: 500px; height: 400px"></div> </form> </body> </html>
Что я уже пробовал:
<pre lang="c#"> //c# and markup js code using System; using System.Collections; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Data.SqlClient; using System.Data; using System.Configuration; using System.IO; using System.Net.Mail; using System.Drawing; public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { } public string ConvertDataTabletoString() { string connStr = ConfigurationManager.ConnectionStrings["Connstr"].ToString(); SqlConnection conn = new SqlConnection(connStr); SqlCommand cmd = new SqlCommand("select title=City,lat=latitude,lng=longitude,Description from box", conn); SqlDataAdapter da = new SqlDataAdapter(cmd); DataTable dt = new DataTable(); da.Fill(dt); System.Web.Script.Serialization.JavaScriptSerializer serializer = new System.Web.Script.Serialization.JavaScriptSerializer(); List<Dictionary<string, object>> rows = new List<Dictionary<string, object>>(); Dictionary<string, object> row; foreach (DataRow dr in dt.Rows) { row = new Dictionary<string, object>(); foreach (DataColumn col in dt.Columns) { row.Add(col.ColumnName, dr[col]); } rows.Add(row); Response.Write(serializer.Serialize(rows)); } return serializer.Serialize(rows); } } </pre> <pre lang="HTML"> <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Copy of Default.aspx.cs" Inherits="_Default" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>Show/Add multiple markers to Google Maps from database in asp.net website</title> <style type="text/css"> html { height: 100% } body { height: 100%; margin: 0; padding: 0 } #map_canvas { height: 100% } </style> <script type="text/javascript" src = "https://maps.googleapis.com/maps/api/js?key=xxxxxxxx&sensor=false"> </script> <script type="text/javascript"> function initialize() { var markers = JSON.parse('<%=ConvertDataTabletoString() %>'); var mapOptions = { center: new google.maps.LatLng(markers[0].lat, markers[0].lng), zoom: 5, mapTypeId: google.maps.MapTypeId.ROADMAP // marker:true }; var infoWindow = new google.maps.InfoWindow(); var map = new google.maps.Map(document.getElementById("map_canvas"), mapOptions); for (i = 0; i < markers.length; i++) { var data = markers[i] var myLatlng = new google.maps.LatLng(data.lat, data.lng); var marker = new google.maps.Marker({ position: myLatlng, map: map, title: data.title }); (function(marker, data) { // Attaching a click event to the current marker google.maps.event.addListener(marker, "click", function(e) { infoWindow.setContent(data.description); infoWindow.open(map, marker); }); })(marker, data); } } </script> </head> <body onload="initialize()"> <form id="form1" runat="server"> <div id="map_canvas" style="width: 500px; height: 400px"></div> </form> </body> </html>
Richard Deeming
Я хотел бы начать путем удаления Response.Write
линия от вашего ConvertDataTabletoString
метод.
Затем просмотрите исходный код вашей страницы и проверьте, что JSON-файл, который вы генерируете совпадает с результатом, который вы ожидаете.
Также проверьте консоль ошибок Вашего браузера на наличие ошибок.
mehdilahori
вы были пишете, ответ.пишете был главным виновником, но почему вы не положили его в решение.я ставлю его сейчас с вашего разрешения.