1

グーグルマップからのデータベーステーブルに境界を保存しました。今、私は境界の一致に基づいてこれらのエントリを表示する必要があります。

たとえば、場所/境界に基づくダッシュボードエントリのテーブルがあります。私はグーグルマップによって返される各ダッシュボードエントリに対する境界を保存しています。ここで、ユーザーが自分の都市/国に関連するダッシュボードの投稿を表示したい場合は、ユーザーの都市/国の境界とダッシュボードのエントリの境界に基づいて照合を行う必要があります。そのため、そのユーザーの場合、境界がユーザーの都市/国の境界と重なるすべてのダッシュボードエントリが表示されます。

現在、MySqlOVERLAPSを試しています。しかし、私は適切な結果を得ることができません:(

いくつかのテストエントリを含むテーブルのダンプ:

INSERT INTO dashboard_entries 
  (id, category_id, entry_title, entry_description, customer_id, entry_date, latitude, longitude, bounds_ne_lat, bounds_ne_lng, bounds_sw_lat, bounds_sw_lng)
VALUES (150, 10, 'Blog Post for China Trip', 'Test Description', 43, '2012-02-08 15:17:46', '48.229147', '16.346052', 39.9084350, 78.6526391, 32.5301142, 116.3918633), (151, 16, 'Trip Post for Lahore Pakistan', 'Trip Post for Lahore Pakistan', 43, '2012-02-08 15:19:14', '48.229147', '16.346052', 34.0160320, 66.6578507, 24.7482340, 75.3818660); 

これが私が使用しているクエリです:

select * 
from dashboard_entries 
where Overlaps(GeomFromText('Polygon((34.0160320 66.6578507,34.0160320 75.3818660,24.7482340 75.3818660,24.7482340 66.6578507,34.0160320 66.6578507))'), GeomFromText('Polygon((bounds_ne_lat bounds_ne_lng,bounds_ne_lat bounds_sw_lng,bounds_sw_lat bounds_sw_lng,bounds_sw_lat bounds_ne_lng,bounds_ne_lat bounds_ne_lng))'))
4

1 に答える 1

1

mysqlのINTERSECT関数を使用して、2つの長方形の交点を見つけました。オーバーラップ機能はまだ実装されていないと思います。以下に示すように、2つの長方形の境界パラメータを取ります。2番目のパラメータもデータベースに保存されるポリゴンです。

SELECT * 
FROM dashboard_entries 
WHERE intersects(GeomFromText('Polygon((34.0160320 66.6578507,34.0160320 75.3818660,24.7482340 75.3818660,24.7482340 66.6578507,34.0160320 66.6578507))'), location_bounds)
于 2012-05-16T07:34:28.880 に答える