2016-06-17 26 views
-1

我决定从Fusion Tables获取行政区域。导入GPX文件后,我把它保存到MySQL行(来自gpx)与多边形相交(来自Fusion Table)

$gpx = simplexml_load_file($folder.$file); 
$trasa ="'LINESTRING("; 
foreach ($gpx->trk->trkseg->trkpt as $trkpt) { 
    $lat = (string) $trkpt['lat']; 
    $lon = (string) $trkpt['lon']; 
    $trasa .= $lon; 
    $trasa .=" "; 
    $trasa .= $lat; 
    $trasa .=","; 
} 
$trasa =rtrim($trasa,","); 
$trasa .=")',0"; 
unset($gpx); 
$ins = @mysql_query("INSERT INTO punktytras(nick,punkty) VALUES('$nick', LineFromText($trasa))"); 

之后,我希望地图融合表层上加载与相交线GPX通过代码

var layer = new google.maps.FusionTablesLayer({ 
      query: { 
      select: 'geometry', 
      from: '1w7Z-O1F0g4s2suHq4mSlAJ-31MBPwVLB7vXKAuaY', 
      where: 'SELECT ST_INTERSECTS(LineFromText($trasa), geometry))' 
      } 
     }); 
    layer.setMap(map); 

但来自Fusion Table的所有几何图形被加载。我犯了什么错误? TIA 4回答。

编辑 OK,我改变我的查询,现在我有

$.ajax({ 
    type: "GET", 
    url: "uploads/<?php echo $row['file'] ?>", 
    dataType: "xml", 
    success: function(xml) { 
     var points = []; 
     var kolory=[]; 
     $(xml).find("trkpt").each(function() { 
     var lat = $(this).attr("lat"); 
     var lon = $(this).attr("lon"); 
     var p = new google.maps.LatLng(lat, lon); 
      var layer = new google.maps.FusionTablesLayer({ 
      query: { 
      select: '\'geometry\'', 
      from: '1w7Z-O1F0g4s2suHq4mSlAJ-31MBPwVLB7vXKAuaY', 
      where: 'ST_INTERSECTS(\'geometry\',CIRCLE(LATLNG('+ lat+","+lon +'), 0.5));' 
      } 
     }); 
     layer.setMap(map); 
     points.push(p); 
     bounds.extend(p); 

     }); 

但我认为,我只有5从我GPX第5蓬Fusion Tables的图层。我不知道,我怎么可以先选择区域包含GPX点,之后将其添加为FTLayer :(

回答

0

您的查询是无效的:

where: 'SELECT ST_INTERSECTS(LineFromText($trasa), geometry))' 

的第一个参数必须是一个列名从你的表行不支持(目前)作为几何

the documentation:。

ST_INTERSECTS

  • <spatial_condition>

使用的WHERE子句。语法是:ST_INTERSECTS(<location_column><geometry>

ST_INTERSECTS不能与ORDER BY ST_DISTANCE组合使用。


  • <geometry>

使用下列之一:

<circle> <rectangle>

  • <location_column> A <column_name>用于表格中包含位置数据的列。
+0

谢谢4回答geocodezip 所以,我应该用 '其中: 'SELECT ST_INTERSECTS(几何,($ trasa2))'' 其中$ trasa2可能是一个矩形从$ trasa建? 或为每个点使用'google.maps.geometry.poly.containsLocation(PointFromText(concat(“POINT(”,$ lat,“”,lon,“)”)),geometry)?在你看来,找到多边形与Line相交的更好的方法是什么? –

+0

Mayby把gpx也纳入Fusion Table是否正确? –

相关问题