次のxmlデータがあります。
<nextbus>
<station>
<name>Resecentrum</name>
<url>http://wap.nastabuss.se/its4wap/QueryForm.aspx?hpl=Resecentrum+(V%C3%A4xj%C3%B6)</url>
<latitude>56.87900440</latitude>
<longitude>14.80585220</longitude>
</station>
<station>
<name>Lunnabyvägen</name>
<url>http://wap.nastabuss.se/its4wap/QueryForm.aspx?hpl=Lunnabyv%C3%A4gen+(V%C3%A4xj%C3%B6)</url>
<latitude>56.9127830</latitude>
<longitude>14.74299680</longitude>
</station>
<station>
<name>Slottsruinen</name>
<localurl>http://crossplatform.co.nf/sample%20html/Slottsruinen+(V%C3%A4xj%C3%B6).html</localurl>
<latitude>56.9387270</latitude>
<longitude>14.79787070</longitude>
</station>
<station>
<name>Evedal</name>
<localurl>http://crossplatform.co.nf/sample%20html/Evedal+(V%C3%A4xj%C3%B6).html</localurl>
<latitude>56.92177890000001</latitude>
<longitude>14.82015180</longitude>
</station>
.....
現在のがあるgeolocation(latitude:56.8517837 and longitude:14.8284759)
場合、Google の Distance Matrix APIlatitude and longitude
を使用して、現在の位置から xml データで提供された駅の 1 つまでの距離を計算します。このような:
http://maps.googleapis.com/maps/api/distancematrix/json?origins=56.8517837,14.8284759&destinations=56.91869459999999,14.85939390&mode=walking&sensor=false
JSON
私が得る応答は次のようなものです:
{
"destination_addresses" : [ "Lenhovdavägen 60, 352 49 Växjö Municipality, Sweden" ],
"origin_addresses" : [ "Tuvanäsvägen 1, Linnéuniversitetet, 352 52 Växjö, Sweden" ],
"rows" : [
{
"elements" : [
{
"distance" : {
"text" : "9.4 km",
"value" : 9429
},
"duration" : {
"text" : "1 hour 57 mins",
"value" : 7010
},
"status" : "OK"
}
]
}
],
"status" : "OK"
}
応答では、eg. 9.4km
ここで距離を取得します。この距離に従ってxmlをソートしたいと思います。のようにnearest 5 stations from current location
。
これにどのようにアプローチすればよいですか?私が簡単に考えることができるのは次のとおりです。
- jQuery を使用して xml を解析します。
- 次に、現在地と目的地ステーションのペアごとに Google Distance Matrix API にクエリを実行して、距離を取得します。
- 各ステーションの結果を連想配列に格納し、参照用にキーを動的に作成します。
- 最後に連想配列をソートします。
station name
これをすべて行った後、 、calculated distance
およびurl
並べ替えられたステーションに関連付けられたを使用できるようになります。
私が一般的に考えている解決策は、特に良いものですかdynamic generation of key
?associative array
誰かがこれについて適切な方法を教えてくれれば、とても感謝しています。おそらく、いくつかのコードはさらに優れているでしょう。