2016-06-17 8 views
-1

Ich entscheide mich, administrativen Bereich von Fusion Tabellen zu bekommen. Nach dem Import GPX-Datei speichern ich es in MySQLLinie (von GPX) schneidet Polygon (von Fusion Tabelle)

$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))"); 

Danach wünsche ich auf der Karte Fusion Table Schicht laden schneidet mit gpx Zeile Code

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

aber alle Geometrie von Fusion Table geladen. Wo habe ich Fehler gemacht? TIA 4 Antworten.

OK bearbeitet, ich meine Abfrage ändern, ich habe jetzt

$.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); 

     }); 

Aber ich denke, dass ich nur 5 Fusion Tables Schichten für die ersten 5 Ponts von meinem gpx haben. Ich habe keine Ahnung, wie kann ich wählen Sie zunächst Bereiche enthält Punkte aus gpx, und danach fügen Sie sie als FTLayer :(

Antwort

0

Ihre Anfrage ist nicht gültig:

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

Der erste Parameter muss ein sein Spaltennamen aus Ihrer Tabelle Zeilen sind (derzeit) nicht als Geometrie unterstützt

von the documentation:..

ST_Intersects

  • <spatial_condition>

in der Klausel WHERE verwendet. Die Syntax lautet: ST_INTERSECTS (<location_column>, <geometry>)

ST_INTERSECTS kann nicht mit ORDER BY ST_DISTANCE kombiniert werden.


  • <geometry>

Verwenden eines der folgenden:

<circle> <rectangle>

  • <location_column> A <column_name> für die Spalte in Ihrer Tabelle, die Standortdaten enthält.
+0

Thanks 4 Antwort geocodezip Also sollte ich 'where: 'SELECT ST_Intersects (Geometrie, ($ trasa2))'' wobei $ trasa2 ein Rechteck von $ trasa bauen könnte? oder 'google.maps.geometry.poly.containsLocation (PointFromText (concat ("POINT (", $ lat, "", lon, "))), Geometrie)' für jeden Punkt verwenden? Was ist Ihrer Meinung nach der bessere Weg, Polygone mit Line zu schneiden? –

+0

Mayby put gpx auch in Fusionstabelle ist der richtige Weg? –