1

この辺りを探しましたが、探しているものに近いものを見つけることができませんでした。いくつかの基準に基づいてマーカーを並べ替える作業マップがあります。経度と緯度の半径距離内で検索できる新しい基準を導入したいと思います。

私の質問は、(mysql/php を介して) xml ファイルを生成する方法が既にあるため、php/mysql で生成された xml ファイルに存在する経度と緯度の情報から、これを再コード化することなく距離を計算する方法はありますか? xml ファイル。私が見たすべてのアプローチは、データベースに保存されている緯度と経度の情報から距離を計算します。

つまり、xml ファイルに既存の緯度と経度の情報がある場合、どのようにして緯度と経度の情報を距離計算式に渡すのでしょうか。ちなみに、php/mysql で生成された xml ファイルはhttp://daressalaam.co.tz/execute.phpで見ることができます。

アサンテ!(ありがとう!)

4

1 に答える 1

0

まず、可能であれば、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 (年を数値にしたい場合) も同じであることに注意しlatlngください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 解析を実行する必要があります。

于 2013-03-28T07:23:05.597 に答える