2011-12-21 17 views
1

私はGoogleマップのコードを書くのが初めてで、JavascriptとPHPの知識が限られています。しかし、私は自分のSQL DBに接続してXMLファイルを出力するPHPファイルを書くことができます。しかし、以前は緯度/経度座標をジオコーディングしていたXMLファイルに関連する複数のマーカーを作成する方法を理解することはできません。Google Maps API V3のマーカーをプロットする

私は市場を作成するために関数(?)が使われていることを知っていますが、生成されたXMLファイルを反復してマーカーを表示する方法はわかりません。私は、表示したいすべてのオブジェクトが半径20マイル以内にあるので、タイルに基づくマーカーの表示を制限したいと思います。

正しい方向に指してください。私はコードのロジックを理解していない、少なくともそのうちのいくつか。適切な記事と、すべてのコードを一緒に平和にする方法を教えてください。マーカーの作成、グリッドによるフィルタリングなど、私はそれができます知っている!

ありがとうございます。

+1

ドキュメントには例があります。 http://code.google.com/apis/maps/documentation/javascript/overlays.html#Markersどこまで手に入れましたか?あなたは少なくとも例を試しましたか? – Eduardo

+0

今は私が望む緯度/経度を中心とした地図しかありません。ズームレベルを選択します。私は、SIC、Zip、緯度、lng、アドレス、名前などのようなすべての列で有効なXMLを入れてPHPファイルを持っている。しかし、私は十分なXMLファイルを取得するためにXMLファイルを反復するコードを書くために十分なJavaScriptを理解していない地図上にプロットするための緯度/経度情報私はそれがどのように機能するのか理解していると思います。それを実装する方法ではありません。 – user1001259

答えて

0

XMLデータでマーカーを作成する方法はたくさんあります。

  1. あなたのページをロードするときと呼ばれ、それはあなたが、例えば、任意のフォーマットでデータを送ることができる等の緯度/経度とマーカーをプロットし、そのツールチップを作成するために必要な他のデータを出力しますPHPの関数を書きますXMLへのJSON、 Javascriptは現在のところフロントエンドからファイルを読み取ることができません(ChromeにはAPIがありますが、これはお勧めできません。サーバーサイドアプローチは安全です)。

  2. すべてのマーカーとgmapsのWORLD_VIEW全体を見ることもできません。また、多くの方法があります。私が気づいているのは、LatLngBoundsオブジェクトを作成することです。これは、基本的には四角形のようなもので、すべてのマーカーを囲むだけです。次に、GoogleMaps APIには、fitBoundsというメソッドがあります。このメソッドはMapクラスのメソッドで、マップオブジェクトのすべてのマーカーの周りに境界を作成するこのオブジェクトに適合します。

私はあなたがしたい場合は、あなたのためのフィドルを通じてコードを与え、私はそれを知らせることができます。

1

まず、XMLデータを解析してMaps APIで使用できるようにする必要があります。このためには、これを行うにはjQueryを使うことをお勧めします。 http://think2loud.com/224-reading-xml-with-jquery/

次に、Google Maps documentationを使って作業すると、マーカーを扱う優れた例があります。

私が表示したいすべてのオブジェクトは20マイル 半径内にあるので、私は、 同様のタイルに基づいてマーカーの上映を制限したいと思います。

あなたがここで求めていることは正確にはわかりません。私は地図のタイルに基づいてフィルタを知る限りはできません。特定のポイントのXマイル以内にあるマーカーを表示できます。それを行う簡単な骨は、特定の点からX度数以内の緯度と経度を持つ特定の境界ボックスを持つ座標を見つけるだけです。あなたがこのようにしたなら、私はそれをサーバー側で行うことをお勧めします。ここではおよそ15マイル(article context here)内の位置をフィルタリングSQLクエリは次のとおりです。それを行うには

SELECT Address, SQRT(POWER(Latitude - @Latitude, 2) + POWER(Longitude - @Longitude, 2)) * 62.1371192 AS DistanceFromAddress 
FROM Stores 
WHERE ABS(Latitude - @Latitude) < 0.25 AND ABS(Longitude - @Longitude) < 0.25 
ORDER BY DistanceFromAddress 

良い方法はポイントが範囲内にあるかどうかを判断するためにHaversine formulaを使用しています。これを自分でハードコーディングすることができます:exampleまたはGoogle's Geometry library(haversineの式を使用)を使用してこれを達成します。

0

Google Maps APIを使用してマーカーを表示していますが、JSONでは表示しています。このAPIを持つ他のトランスポート対XMLを使用して

// Iterate through the rows, printing XML nodes for each 
while ($row = @mysql_fetch_assoc($result)){ 
    // ADD TO XML DOCUMENT NODE 
    echo '<marker '; 
    echo 'name="' . parseToXML($row['name']) . '" '; 
    echo 'address="' . parseToXML($row['address']) . '" '; 
    echo 'lat="' . $row['lat'] . '" '; 
    echo 'lng="' . $row['lng'] . '" '; 
    echo 'type="' . $row['type'] . '" '; 
    echo '/>'; 
} 

も良いdiscussion:私はfollowingがマーカーとXMLを使用してについて見つけました。

関連する問題