私は iOS のアプリで、Trip Planner があります。たとえば、Google 方向 API を使用して、ニューヨークからボストンへのルートを取得しています。マップ上にポリラインを作成するために、50 の異なる緯度経度があります。その後、ボストンに向かう途中で訪れることができるこのルート上の場所を取得する必要があります。
Google ルート API が提供するもの:
latitude = "30.308399"; longitude = "-89.748299";
latitude = "30.310930"; longitude = "-89.818604";
latitude = "30.350050"; longitude = "-89.916054";
latitude = "30.432850"; longitude = "-90.098549";
....
現在、各ポイントでmysqlデータベースを検索して、最も近い場所を取得しています。
select id,title,type_id,service_id,latitude,longitude,state,city,zip,address, ( 3959 * acos( cos( ラジアン(31.72723) ) * cos( ラジアン(緯度) ) * cos( ラジアン( 経度) - ラジアン(-106.3047)) + sin( ラジアン(31.72723) ) * sin( ラジアン(緯度) ) ) 場所からの AS 距離 距離 <= 10 距離順 ASC 制限 10
しかし、このニューヨークからサンフランシスコへの旅行で 800 ポイントを獲得すると、合計で 2 秒以上かかるデータベースに対して 800 のクエリを実行することになります。7 つの異なるテーブルがあり、14 秒になります。
ならどうするのがベスト?