我在mysql中使用空间数据类型点时遇到问题。我在mysql中有一个名为'tasks'的表,我在其中存储以下信息。
Id Int(11) Primary key Name Varchar(50) Street Varchar(50) City Varchar(50) Province Varchar(50) Country Varchar(50) Lat decimal(15,12) Long decimal(15,12) latLong point
以下是样本数据。
INSERT INTO `tasks`
(`id`, `name`, `street `, `city`, `province`, `postalCode`, `lat`, `lng`, `latLong`) VALUES
(202, 'task1', ' sursagar ', 'vadodara', 'Gujarat', 'India', 22.301887300000, 73.205468800000, 0x0000000001010000006288d349364e5240cfbf5df6eb4c3640),
(203, 'task2', ' madvi ', 'vadodara', 'Gujarat', 'India', 22.302665500000, 73.204284700000, 0x000000000101000000af642200134d5240a320787c7b4d3640),
(204, 'task3', 'panigat ', 'vadodara', 'Gujarat', 'India', 22.300475500000, 73.222063499999, 0x00000000010100000047e7fc14c74d5240795be9b5d94c3640),
(229, 'taks4', 'Akota Stadium Road', 'Vadodara', 'Gujarat', 'India', 22.297802300000, 73.166531300000, 0x000000000101000000aad0e572a84a5240702c83c53c4c3640);
我们在iPhone中有一个应用程序,它向我发送了2个不同的lat,lng值,我们需要传递介于该lat之间的所有位置。 例如。它们正在传递2个lat,lng值,我需要得出它之间的所有位置。 A点:22.327847,73.172894 B点:22.272259,73.227825
相同的谷歌地图的附加屏幕截图。
现在提取我在查询后写的数据。
SELECT `task`.*
FROM `tasks` AS `task`
WHERE `task`.`isDeleted` = '0'
AND MBRContains(GeomFromText('Polygon((73.172894 22.327847), (73.227825 22.272259))'),latLong)
ORDER BY task.created DESC
我无法获得给定点A和点B之间的所有点。我可以看到我的存储点位于这些点之间但不能获得所有值。我在结果中只得到一个值。我的查询有什么问题,或者我应用了错误的逻辑?
任何人都可以帮助我吗?
答案 0 :(得分:0)
根据doc,我更改了您的Polygon参数,如下所示
SELECT `task`.*
FROM `tasks` AS `task`
WHERE `task`.`isDeleted` = '0'
AND MBRContains(GeomFromText('Polygon((73.172894 22.327847, 73.227825 22.272259))'),latLong)
ORDER BY task.created DESC
希望这会对你有帮助!