-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 :(
谢谢4回答geocodezip 所以,我应该用 '其中: 'SELECT ST_INTERSECTS(几何,($ trasa2))'' 其中$ trasa2可能是一个矩形从$ trasa建? 或为每个点使用'google.maps.geometry.poly.containsLocation(PointFromText(concat(“POINT(”,$ lat,“”,lon,“)”)),geometry)?在你看来,找到多边形与Line相交的更好的方法是什么? –
Mayby把gpx也纳入Fusion Table是否正确? –