まず、可能であれば、XML ではなく JSON を生成するように PHP コードを変更してください。JSON は、XML と同じくらい簡単に PHP から生成できます。必要なコンテンツを含む PHP 配列を作成し、それに対して json_encodeを呼び出すだけです。そのページにはたくさんの例があります。また、JSON はXML よりも JavaScript での操作がはるかに簡単です。
たとえば、XML ファイルから抜粋して JSON 形式にすると、次のようになります。
{
"markers": [
{
"section": "Female",
"name": "Colorado Hooper",
"address": "1415 Market St ",
"gender": "Female",
"graduation": 1996,
"degree": "MS Computer Information Systems",
"lat": 39.748177,
"lng": -105.000504,
"zipcode": "80202",
"type": ""
},
{
"section": "Female",
"name": "Willow Weiss",
"address": "259 E Broad St ",
"gender": "Female",
"graduation": 2001,
"degree": "MS Computer Science",
"lat": 33.957802,
"lng": -83.374657,
"zipcode": "30601",
"type": ""
}
]
}
JSON を使用する利点は、使用するすべての要素と属性に対して一連の解析関数を呼び出す代わりに、JavaScript でデータに直接アクセスできることです。これにより、多くの作業が節約され、JavaScript コードがよりクリーンで理解しやすくなります。
正しいデータ型を使用することもできます。 と の値は文字列ではなく数値であり、 for (年を数値にしたい場合) も同じであることに注意しlat
てlng
くださいgraduation
。ただし、注意してください。郵便番号は数字ではありません。それらは常に文字列として処理する必要があります。(問題がある場合は、引き続きすべての文字列を使用し、JavaScript コードで必要に応じて数値に変換することができます。)
それはあなたができることのように聞こえますか、それとも何らかの理由で XML を使用する必要がありますか?
距離の計算に進みます...どの距離を計算したいかは言いませんでしたが、緯度と経度の座標が 2 つあれば、 Maps API の Geometry ライブラリのgoogle.maps.geometry.spherical.computeDistanceBetween()
関数を使用して、それらの間の距離を簡単に取得できます。 . 例として、上記の JSON オブジェクトが という名前の変数に格納されていて、ファイル内の最初の 2 つのエントリ間の距離を取得したいとします。次のようになります。json
var computeDistanceBetween = google.maps.geometry.spherical.computeDistanceBetween;
var markerA = json.markers[0];
var markerB = json.markers[1];
var latLngA = new google.maps.LatLng( markerA.lat, markerA.lng );
var latLngB = new google.maps.LatLng( markerB.lat, markerB.lng );
var distance = computeDistanceBetween( latLngA, latLngB );
XML を使用する場合でも、距離の計算は同様ですが、必要なデータ属性を取得するには XML 解析を実行する必要があります。