用户输入一个位置 - 如何循环包含路径的数据库

时间:2015-08-06 10:53:55

标签: mysql google-maps-api-3 asp-classic

我有一个mySql数据库,包含lat和lng为起始位置和结束位置指定的路线,以及开始的日期和时间。

然后我有一个网页(Classic asp),用户可以使用Google maps api输入日期,时间和位置。

当用户键入某个位置时,我想在数据库中循环,看看是否有任何路由在给定时间内传递了用户位置,然后显示结果,以便他可以选择他喜欢的路线。

我一直在关注isLocationOnEdge,但我无法弄清楚如何使用它以及如何获取价值,以便我可以在我的asp中使用它。

我找到了这段代码,但正如我所说 - 不知道必须使用它以便它适合我的问题:

function initialize() {
  var mapOptions = {
    zoom: 5,
    center: new google.maps.LatLng(24.886, -70.269),
    mapTypeId: google.maps.MapTypeId.TERRAIN
  };

  var map = new google.maps.Map(document.getElementById('map-canvas'),
  mapOptions);

  var cascadiaFault = new google.maps.Polyline({
    path: [
      new google.maps.LatLng(49.95, -128.1),
      new google.maps.LatLng(46.26, -126.3),
      new google.maps.LatLng(40.3, -125.4)
    ]
  });

  var myPosition = new google.maps.LatLng(43.0, -125.9, 10e-7);

  if (google.maps.geometry.poly.isLocationOnEdge(myPosition,     cascadiaFault)) {
    alert("Relocate!");
  }
}

google.maps.event.addDomListener(window, 'load', initialize);

任何人都可以帮助我吗?或者只是给出一些我可以遵循的提示?

1 个答案:

答案 0 :(得分:0)

好吧,显然google.maps.geometry.poly.isLocationOnEdge(myPosition, cascadiaFault)会返回一个你可以测试的布尔值,所以我怀疑你只想在JavaScript代码中生成一个值数组,比如...

<%
    Dim sql, c, joinLL, rs, conn
    sql = "SELECT lat, long, FROM myGeoTable WHERE condition = true "
    conn = Application("CONN_STRING")

    'Pass the string using RecordSet.GetString...
    Set rs = Server.CreateObject("ADODB.RecordSet")
    rs.Open sql, conn
    joinLL = "[new google.maps.LatLng(" & _
      rs.GetString(2, , ", ", "), new google.maps.LatLng(", "") & _
      "]"
    rs.Close
    Set rs = Nothing
%>

......或许,这样的东西可以测试你的长/拉列表...

    // joinLL is the variable from the VB Script...
    var pLongLat = <%= joinLL %>;
    var llPoint;

    foreach(llPoint in pLongLat) {
        if(google.maps.geometry.poly.isLocationOnEdge(llPoint, cascadiaFault)) { 
            //Do your processing
        }
    }

在查看ADO RecordSet方法GetStringGetRows时,您可能值得一试;它们非常有用且非常快。