2

私はJavaScriptが初めてで、Googleマップの場所ライブラリを使用して、さまざまなタイプの場所の結果にさまざまなカスタムアイコンを使用するロジックを理解できません. 例 - これはスタジアムと公園をリクエストします

var request = {
      location: myLatLng,
      radius: 20000,
      types: ['stadium','park']
    };
    infowindow = new google.maps.InfoWindow();
    var service = new google.maps.places.PlacesService(map);
    service.search(request, callback);

コールバック関数にはマーカー作成関数が含まれています

function callback(results, status) {
    if (status == google.maps.places.PlacesServiceStatus.OK) {
      for (var i = 0; i < results.length; i++) {
        createMarker(results[i]); 
      } 
    }
}

マーカー作成機能は次のようになります

var emu = 'EMU_test_icon.png'

function createMarker(place) {
    var placeLoc = place.geometry.location;
    var marker = new google.maps.Marker({
      map: map,
      icon: emu,
      position: place.geometry.location
    }); 

したがって、すべてのマーカーを割り当てて EMU_test_icon 画像を使用する方法はわかっていますが、「スタジアム」の場所タイプの結果をリストしたアイコン (emu) に送信し、「公園」の結果のマーカーを別の場所に作成するにはどうすればよいですか?カスタム アイコン (画像 2)?

4

1 に答える 1

0

createMarker メソッドに渡される「place」パラメータには、役立つ「type」プロパティがあります。こちらの PlaceSearchResults 見出しの下のリファレンスを参照してください。

2 つのアイコンをマップに保存し、場所のタイプに基づいてアイコンのタイプを検索できます。

// store the icons in a map, key'd by type
var iconMap = {'stadium': 'EMU_test_stadium_icon.png', 'park': 'EMU_test_park_icon.png'};

// access types array from PlaceResult object
//  search to find the string "stadium" and "park"
//  default the type to stadium and check to see if place is a park
//  if its a park update the type of icon we select
//  in the original call to create a marker, get the icon string by type
function createMarker(place) {

    var placeLoc = place.geometry.location,
        isStadium = place.types.indexOf("stadium") !== -1,
        isPark = place.types.indexOf("park") !== -1,
        iconType = "stadium";

    if (isPark) {
        iconType = "park";
    }

    new google.maps.Marker({
        map: map,
        icon: iconMap[iconType],
        position: place.geometry.location
    });

}  

*注: これは IE < 9 では機能しません (配列プロトタイプに indexOf 関数を追加しない場合)

*注 2: 「マップ」変数が別の場所で宣言されていると仮定します

于 2012-08-10T08:10:14.277 に答える