结合使用Google Maps API和地方图书馆,我可以使用here中显示的推荐方法向附近的学校展示。
var map;
var infowindow;
function initMap() {
var pyrmont = {lat: -33.867, lng: 151.195};
map = new google.maps.Map(document.getElementById('map'), {
center: pyrmont,
zoom: 15
});
infowindow = new google.maps.InfoWindow();
var service = new google.maps.places.PlacesService(map);
service.nearbySearch({
location: pyrmont,
radius: 500,
type: ['store']
}, callback);
}
function callback(results, status) {
if (status === google.maps.places.PlacesServiceStatus.OK) {
for (var i = 0; i < results.length; i++) {
createMarker(results[i]);
}
}
}
function createMarker(place) {
var placeLoc = place.geometry.location;
var marker = new google.maps.Marker({
map: map,
position: place.geometry.location
});
google.maps.event.addListener(marker, 'click', function() {
infowindow.setContent(place.name);
infowindow.open(map, this);
});
}
这是一个有效的小提琴:https://jsfiddle.net/api/post/library/pure/
问题是,如果我还想展示附近的商店以及学校,似乎每个人都建议这样做:
type: ['store', 'school']
尽管从技术上讲这是可行的,但问题是地图仅显示了许多毫无意义的默认标记,而无法知道其内容。
所以我的问题是:如何更改学校和商店的图标?理想情况下,我会为每种不同的类型显示不同的图标。
最佳答案
这与在常规地图中添加自定义标记没有什么不同,只需要为每个type
分别进行api调用,因此即使type: ['store', 'school']
都可以工作,并且可以获得结果,但results
中没有类型说明符告诉它是学校还是商店。此外,您需要创建各自的回调以设置各自的图标
function createMarker(place) {
var placeLoc = place.geometry.location;
var marker = new google.maps.Marker({
icon:"http://example.com/icon.png", //<-- only this line is enough for icon
map: map,
position: place.geometry.location
});
通过this可以更好地理解
此外,每个结果都会有一个默认图标(作为
icon
属性),也可以使用var marker = new google.maps.Marker({
icon:place.icon,
map: map,
position: place.geometry.location
});
关于javascript - Google Places API显示学校和商店,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40582979/