2012-03-10 2 views
0

Google Maps APIを使用して私の学校のプロトタイプ自転車駐車地図を作成しています。 私はすべての自転車ラックの場所をMYSQLに保管しました。属性はlatitudeである と位置の経度のみです。今、ユーザーがマーカーで をクリックすると、対応する自転車ラックの画像が表示されるような機能を追加しようとしています。Google Maps Markerオブジェクトに関するデータ構造/モデル設計に関するヒントが必要

私はこれをInfoWindowオブジェクトを使用して実行しようとしています。

InfoWindowはほとんどの場合Markerでのみ使用されますが、Markerオブジェクトはそのプロパティ/属性の1つとしてInfoWindowオブジェクトを持つことはできません。

私はユーザーがマーカーをクリックするたびに新しいInfoWindowを作成することを考えていました。しかし、それはいくつかの遅れを作成するように感じる。

私が気にしていたもう1つの選択肢は、現在のテーブルに、すべてのInfoWindowオブジェクトを含む別のテーブルまたは列を作成することでした。

しかし、InfoWindowオブジェクトをマーカーオブジェクトの一部にしたいのは、 が直感的に理にかなっているからです。

答えて

1

これを行う最善の方法はありませんが、マーカーオブジェクトにはinfoWindowがプロパティの1つとして含まれていることがあります。 GoogleのAPIは、マーカーオブジェクトにランダムなプロパティ/メソッドを配置するときにエラーを制限/スローしません。以下は、完全に有効なコードです:

var someMarker = new google.maps.Marker(properties); 
someMarker.infoWindow = new google.maps.InfoWindow(properties); 
someMarker.infoWindow.setMap(map); 
someMarker.infoWindow.open(); 

マップ上の唯一の情報ウィンドウオブジェクトは、一般的にそこのGoogleマップ注入の多くに、言われていること。これは、4つまたは5つのインフォウィンドウを1つのマップビューで開いた場合、マップを乱雑にする傾向があり、ベースマップタイルはもう表示されません。

そのため、あなたは、単一の情報ウィンドウオブジェクトを持っており、それの内容を変更することができますが、そのマーカーに応じて、クリックされた:

var yourGlobalInfoWindow = new google.map.InfoWindow(properties); 
var someMarkerA = new google.maps.Marker(properties); 
var someMarkerB = new google.maps.Marker(properties); 
someMarkerA.infoWindowContent = 'some A HTML content here'; 
someMarkerB.infoWindowContent = 'some B HTML content here'; 

google.maps.event.addListener(someMarkerA,'click',function() { yourGlobalInfoWindow.setContent(someMarkerA.infoWindowContent); }); 

google.maps.event.addListener(someMarkerB,'click',function() { yourGlobalInfoWindow.setContent(someMarkerB.infoWindowContent); }); 

注上記のコードは、説明のみを目的としたものであり、であること最適化されていないかエレガントではありませんが、それはポイントを取得します。

+0

なぜ私は1つのグローバルな情報ウィンドウを持つことを考えなかったのですか。チップアダムに感謝します! – wayfare

関連する問題