线(来自gpx)与多边形相交(来自Fusion Table)

时间:2016-06-17 18:09:29

标签: google-maps google-maps-api-3 google-fusion-tables

我决定从Fusion Tables获取管理区域。导入gpx文件后,我将其保存到MySQL

    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图层与代码

的gpx相交
$.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); 

       });

但加载了Fusion Table中的所有几何图形。哪里弄错了? TIA 4答案。

编辑 好的,我改变了我的查询,现在我已经

-ldl

但我认为我的gpx前5个ponts中只有5个Fusion Table Layers。我不知道,我怎样才能首先从gpx中选择包含点的区域,然后将它们添加为FTLayer :(

1 个答案:

答案 0 :(得分: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>表格中包含位置数据的列的<column_name>
  •