4

mysql で空間データ型のポイントを使用すると問題が発生します。次の情報を保存しているmysqlに「タスク」と呼ばれる1つのテーブルがあります。

Id Int(11) 主キー
名前 Varchar(50)
ストリートバーチャー(50)
シティバーチャー(50)
プロヴィンス ヴァルチャル(50)
カントリーバーチャー(50)
小数点以下 (15,12)  
長小数 (15,12)  
緯度経度   

以下はサンプルデータです。

  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 つの異なる緯度経度値を送信するアプリケーションがあり、その緯度経度の間にあるすべての場所を渡す必要があります。たとえば。それらは次の 2 つの緯度経度値を渡しているため、その間にあるすべての場所を導出する必要があります。ポイント A: 22.327847、73.172894 ポイント B: 22.272259、73.227825

同じGoogleマップのスクリーンショットを添付。

ここに画像の説明を入力

データを取得するために、次のクエリを作成しています。

     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 の間のすべてのポイントを取得できません。保存されているポイントがこのポイントの間にあることがわかりますが、すべての値を取得することはできません。結果として得られる値は 1 つだけです。クエリの何が問題なのですか、または間違ったロジックを適用していますか?

誰でもこれで私を助けることができますか?

4

1 に答える 1

0

ドキュメントによると、 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  

これがあなたを助けることを願っています!

于 2013-10-26T10:37:32.610 に答える