2

我目前的任务是将存储在 MySQL 数据库中的一些 GPS 数据与谷歌地球集成。目标是创建这些读数的地标/航点并将它们显示在谷歌地球上。

我在谷歌上搜索了这个任务,发现了一篇文章:“A Database Driven Earth App: Using PHP & MySQL with the Earth API”。

位于网址:

 https://developers.google.com/earth/articles/phpsqlearth

我成功地跟踪了它;直到我来到我必须创建地标的地方。主要问题是“createPlacemark”函数具有以下签名:

"createPlacemark(name,address,type,lat,lng)" . 

我主要关心的是latandlng参数(纬度和经度),因为数据库中的 GPS 数据都是格式:

     "N5 bb.xxx E8 cc.yyy".

没有存储单独的经度或纬度数据。正在通过 garmin gps 收集数据。我在想也许我可以通过这样做来解决这个问题:

    var point = ge.createPoint('N5 bb.xxx E8 cc.yyy ') , 

忘记了

    point.setLatitude(parseFloat(lat))

   point.setLongitude(parseFloat(lng)) statements.

但是,我想确认我是否走在正确的道路上,因为我将离开我的开发机器几天。

4

1 回答 1

1

createPoint不,像你一样调用 GEPlugin 方法

var point = ge.createPoint('N5 bb.xxx E8 cc.yyy');

将使用 ID 创建一个点N5 bb.xxx E8 cc.yyy- 该createPoint方法仅采用单个字符串参数,用于设置ID对象的。

正如你所拥有的那样,结果点 KML 将如下所示:

<Point id="N5 bb.xxx E8 cc.yyy">
</Point>

您需要在创建的实际点对象上调用一个或多个方法来设置纬度和经度数据。要么point.set()或-point.setLatitude()然后point.setLongitude()您最终将点设置为地标几何图形以使其工作。

看看它,你真正需要做的就是使用一个简单的函数解析 Garmin GPS。简单地使用空格分割字符串应该可以正常工作。

  //parse a string in the Garmin format "N5 bb.xxx E8 cc.yyy"
  //returns a kmlpoint
  function gpsToPoint(data) {
    var parts = data.split(' ');
    var point = ge.createPoint('');
    point.setLatitude(parseFloat(parts[1]));
    point.setLongitude(parseFloat(parts[3]));
    return point;
  }

然后只需更改 createPlacemark 函数,以便使用gpsToPoint()传入 Garmin 数据的新方法创建点对象。

这会给你像 KML

<Point>
  <coordinates>bb.xxx,cc.yyy,0</coordinates>
</Point>
于 2013-05-02T13:42:45.670 回答