从CodeBehind通过LAT LONG到谷歌地图

时间:2017-01-13 08:41:54

标签: asp.net vb.net google-maps

我测试了Google Maps Java示例的示例,它运行正常,但我如何从VB Code Behind传递Lat和Long?

这是一个例子:

    <%@ Page Language="vb" AutoEventWireup="false" CodeBehind="Map.aspx.vb"      Inherits="Learning.Map" %>

    <!DOCTYPE html>

    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
    <title></title>
    <script>
    function initMap() {
        var uluru = { lat: 52.90560483, lng: -1.36920258 };             
        var map = new google.maps.Map(document.getElementById('map'), {
            zoom: 15,
            center: uluru
        });
        var marker = new google.maps.Marker({
            position: uluru,
            map: map
        });
    }
   </script>
   <style>
    #map {
        position: relative;
        height: 500px;
        width: 100%;
    }
   </style>
  </head>
  <body>
  <form id="form1" runat="server">
    <h3>My Google Maps Demo</h3>       
    <div id="map"></div>
    <!-- Replace the value of the key parameter with your own API key. -->
    <script async defer
        src="https://maps.googleapis.com/maps/api/js?key=ABCD&callback=initMap">
  </script>
  </form>
  </body>
  </html>

我在VB Code Behind中试过这个:

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

    Page.ClientScript.RegisterClientScriptBlock(Me.GetType(), "initMap", "lat: 52.90560483, lng: -1.36920258")

    End Sub

并将功能调整为:

    <script>
    function initMap(myvar) {            
        var uluru = myvar;
        var map = new google.maps.Map(document.getElementById('map'), {
            zoom: 15,
            center: uluru
        });
        var marker = new google.maps.Marker({
            position: uluru,
            map: map
        });
    }
    </script>

唯一显示的是灰色框。任何人都可以帮助并告诉我如何将Lat和Long传递给函数甚至更简单的代码隐藏方式?原因是,我将从SQLExpress服务器调用Lat和Long。

非常感谢。

1 个答案:

答案 0 :(得分:1)

假设您使用ASP.NET而不使用MVC

最简单的方法是,您可以将 lat lon 放入代码后面的变量中,并将它们传递给隐藏字段(并从javascript或jquery获取)或者只是在页面中打印

代码背后:

protected string _lat;
protected string _lng;

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

    _lat = "52.90560483";
    _lng = "-1.36920258";

End Sub

页:

<script>
function initMap(myvar) {            
    var uluru = { lat: <%= _lat %>, lng: <%= _lng %> };
    var map = new google.maps.Map(document.getElementById('map'), {
        zoom: 15,
        center: uluru
    });
    var marker = new google.maps.Marker({
        position: uluru,
        map: map
    });
}
</script>

您的功能失败的原因是因为您将 lat lng 一起作为字符串传递,但Google地图需要将其作为对象数组。