将Garmin GPS阅读转换为适用于Google Earth API的格式的问题

时间:2013-05-01 09:24:01

标签: google-maps google-maps-api-3 google-earth google-earth-plugin

我目前的任务是整合存储在MySQL中的一些GPS数据 谷歌地球数据库。目标是创造 这些读数的地标/航点,并在谷歌上显示 大地。

我搜索了这个任务并发现了一篇文章: “数据库驱动的地球应用程序:使用PHP和MySQL与Earth API”。

位于网址:

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

我顺利地跟着它;直到我来到我必须创建的地方 地标。主要问题是'createPlacemark'功能 有以下签名:

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

我的主要关注点是latlng参数(纬度和经度),因为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.

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

1 个答案:

答案 0 :(得分:1)

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

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函数,以便使用传入Garmin数据的新gpsToPoint()方法创建点对象。

这会给你KML像

<Point>
  <coordinates>bb.xxx,cc.yyy,0</coordinates>
</Point>