mehdilahori Ответов: 1

Как загрузить маркеры 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">
 &lt;html xmlns="http://www.w3.org/1999/xhtml">
&lt;head>
&lt;title>Show/Add multiple markers to Google Maps from database in asp.net website&lt;/title>
<style type="text/css">
html { height: 100% }
body { height: 100%; margin: 0; padding: 0 }
#map_canvas { height: 100% }
</style>
&lt;script type="text/javascript" src = "https://maps.googleapis.com/maps/api/js?key=xxxxxxxx&sensor=false">
&lt;/script>
&lt;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);

        }

    }

&lt;/script>
&lt;/head>
&lt;body onload="initialize()">
&lt;form id="form1" runat="server">
<div id="map_canvas" style="width: 500px; height: 400px"></div>
&lt;/form>
&lt;/body>
&lt;/html>

Richard Deeming

Я хотел бы начать путем удаления Response.Write линия от вашего ConvertDataTabletoString метод.

Затем просмотрите исходный код вашей страницы и проверьте, что JSON-файл, который вы генерируете совпадает с результатом, который вы ожидаете.

Также проверьте консоль ошибок Вашего браузера на наличие ошибок.

mehdilahori

вы были пишете, ответ.пишете был главным виновником, но почему вы не положили его в решение.я ставлю его сейчас с вашего разрешения.

1 Ответов

Рейтинг:
12

mehdilahori

Ричард Диминг прав.
главным виновником был ответ. просто удалил его, и он заработал.