使用Google商家信息库的Google地图中不同地点类型的不同图片

时间:2012-07-16 20:06:40

标签: javascript google-maps google-maps-markers google-places

我是javascript的新手,并且无法弄清楚使用谷歌地图中的地方库为不同类型的地方的结果使用不同的自定义图标的逻辑。 例如 - 这将要求体育馆和公园

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),但是为“park”的结果创建标记到另一个自定义图标(image2)?

1 个答案:

答案 0 :(得分:0)

传递给createMarker方法的“place”参数具有可以提供帮助的“type”属性。请参阅PlaceSearchResults标题下的参考here

您可以将两个图标存储在地图中,并根据地点类型查找图标类型。

// 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&lt; 9(不向数组原型添加indexOf函数)

*注意2:假设您的“map”var在其他地方声明