我正在制作一个基于网络的应用程序,允许用户根据他们的输入创建路线。用户将路径点添加到谷歌地图,获取纬度和经度点并将其复制到网站上的表格中,然后使用 PHP 将数据发送到 MySQL 数据库。
我在将纬度和经度点添加到 MySQL 数据库时遇到问题。我正在使用数据类型“POINT”。但是,当我将点发送到数据库时,出现错误“无法从发送到 GEOMETRY 字段的数据获取几何对象”。
我花了好几天的时间来研究这个错误。我尝试添加空间索引,但 MySQL 不允许我这样做。我尝试更改表格,以便将该行更改为update table set point_latlon = POINT(lat lon)
但它告诉我纬度没有定义,我找不到解决方案。
我真的很困惑如何修复这个错误,并且已经用尽了我所有的资源。
这是我的桌子:
CREATE TABLE user_input (
point_id not null primary key auto_increment,
point_desc varchar(40),
point_LatLon not null point
);
这是我的插入语句:
$sql = "INSERT INTO user_input (point_desc, point_latLon) VALUES ('$_GET[waypoint_in_Desc]', 'GeomFromText($_GET[waypoint_in_LatLon])') ;";
这是我第一次发帖,如果我遗漏了任何内容或帖子格式不正确,我深表歉意。提前致谢。
你需要类似的东西
SET point_LatLon = GeomFromText('POINT(45.1234 123.4567)')
其中传递给 GeomFromText 的参数是一个字符串,例如
POINT(45.1234 123.4567)
我发现如果我有两个数字参数,这种构造效果很好,其中?
是那些纬度和经度参数的占位符。 CONCAT 函数将所需的文本字符串拼凑在一起。
GeomFromText( CONCAT('POINT(', ?, ' ', ?, ')') )
在 MySQL 5.7.4 之前的版本(尚未普遍可用)中,您无法在 InnoDB 表中创建空间索引。如果您需要空间索引,则需要对表使用 MyISAM 访问方法。这有点麻烦。
这是关于使用地理空间来实现此目的的文章。http://www.plumislandmedia.net/mysql/using-mysqls-geospatial-extension-location-finder/ http://www.plumislandmedia.net/mysql/using-mysqls-geospatial-extension-location-finder/
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)