ASP.NET和JavaScript(GoogleMaps标记到JavaScript)

时间:2011-06-27 20:18:59

标签: javascript asp.net google-maps

我有一个新手问题。 如果在我的asp.net应用程序中,我需要查询数据库并获取一组Google标记以显示在地图上。我是Web开发的新手,所以我不确定如何将数据从asp.net传递给JavaScript。它是通过从JavaScript调用的WebService完成的,还是有另一种方法可以做到这一点?我可能误解了一些主要概念。同样,有没有办法将数据从JavaScript传递到asp.net应用程序(例如,某些东西不在谷歌地图上,数据应该存储在后端的数据库中)。如果这太基础,任何链接将不胜感激。谢谢 !

2 个答案:

答案 0 :(得分:2)

嗯,我就是这样做的(仅供参考,这很大程度上依赖于 JQuery javascript库):

  1. 声明将显示地图的<div>
  2. 使用$(document).ready()处理程序等待加载DOM以启动请求
  3. 对WCF或ASMX Web服务使用异步JQuery $.ajax调用,该服务返回表示标记数据的JSON。
  4. 以下是一些代码的简要说明:

    ... your web page
    
    <script>
    $(document.)ready(function() {
    
    $.ajax(
    
     url: "mapquery.asmx",
     async: true,
     dataType: json,
     success: function(data)
     {
        var map = new GMap2(document.getElementById("map_div"));
        for (int i = 0; i < data.length; i++)
        {
           var point = new GLatLng(data.results[i].lat,
                                   data.results[i].lng);
           var marker = createMarker(point, data.results[i].desc, 
                                     data.results[i].type);
           map.addOverlay(marker);
        }
     }
    );
    
    });
    </script>
    

    示例json从mapquery.asmx返回:

    results = [ {
          lat: 41.765,
          lng: 80.572
          desc: "My house",
          type: "X"
       },
       {
          lat: 42.765,
          lng: 81.572
          desc: "Friend's house",
          type: "X"
       }
    ]
    

答案 1 :(得分:0)

您可以使用以下内容:

function load() {
  if (GBrowserIsCompatible()) {
    var map = new GMap2(document.getElementById("map_canvas"));
    map.addControl(new GSmallMapControl());
    map.addControl(new GMapTypeControl());
    map.setCenter(new GLatLng(43.104135, -77.884455), 6);
    // Change this depending on the name of your PHP file
    GDownloadUrl("generateXML.aspx", function(data) {
          var xml = GXml.parse(data);
          var markers = xml.documentElement.getElementsByTagName("marker");       
          for (var i = 0; i < markers.length; i++) {
            var desc = htmlEntities(markers[i].getAttribute("desc"));   
            var type = markers[i].getAttribute("type");
            var point = new GLatLng(parseFloat(markers[i].getAttribute("lat")),
            parseFloat(markers[i].getAttribute("lng")));
            var marker = createMarker(point, desc, type);
            map.addOverlay(marker);
          }
    });
}

在generateXML.aspx中,发送一个XML响应,它应该像魅力一样。