我正在努力建立一个网站,在这个网站中,像我这样的流星爱好者可以获得一张欧洲地图,其中包含过去200年来所有的流星影响。当地图启动时,流星图标将使用信息窗内的相应信息呈现到地图中(点击之后)但是,我想使其多维,因此除了流星数据之外我还使用谷歌地方api。它会做什么,在info-windows 3按钮内部会出现,其中一个说'hotel'一个用于'restaurant'而另一个用于'旅游信息',用户可以用滑块选择一个半径,一旦按下按钮它就会看起来在选定的流星周围给定半径内建立。现在我的问题是,
var infowindow = new google.maps.InfoWindow({
content: "<b>Meteor</b>: :" + event.feature.getProperty('name') +
"<br><b>Mass (gram)</b>: :" + event.feature.getProperty('mass (g)') +
"<br><b>Date</b>: :" + event.feature.getProperty('date') +
"<br><b>Longitude</b>: :" + event.feature.getProperty('longitude') +
"<br><b>Latitude</b>: :" + event.feature.getProperty('latitude') +
"<br>---Side information---" +
"<br><b>ID</b>: :" + event.feature.getProperty('id') +
"<br><b>Valid name</b>: :" + event.feature.getProperty('nametype') +
"<br><b>Fell or Found</b>: :" + event.feature.getProperty('fall') +
"<br><b>Rec. class</b>: :" + event.feature.getProperty('recclass') +
"<br>---Search for nearby establishments---: :<br>" +
'<br><button id="hotel" onclick="createEnvironment(event.feature.getProperty("latitude"), event.feature.getProperty("longitude"), "hotel", slider.value)">Hotels</button>' +
"<button id='restaurants' onclick=" + createEnvironment(event.feature.getProperty('latitude'), event.feature.getProperty('longitude'), 'restaurants', slider.value) + ">Restaurants</button>" +
"<button id='touristinfo' onclick=" + createEnvironment(event.feature.getProperty('latitude'), event.feature.getProperty('longitude'), 'tourist information', slider.value) + ">Tourist-info</button>" +
});
infowindow.setPosition(event.latLng);
infowindow.open(map);
'hotel'等于谷歌将在地图上搜索的字符串。 'slider.value'等于半径,其他东西无关紧要。
每当我创建这些按钮时,它似乎会在我创建它们时自动单击它们。我认为这与函数在字符串外部调用导致它们在创建按钮时执行的事实有关,但是将它们全部放在字符串中似乎没有帮助,如第一个按钮所示。那么有人可以告诉我如何防止这种情况吗?或者单独关闭它们?只要你能把它们关闭,它们都会被触发并不重要。
EDIT 这就是该功能所要求的:
function createEnvironment(lat, long, soort, range){
var building = soort;
var locatie = new google.maps.LatLng(lat, long);
var request = {
location: locatie,
radius: range,
type: [soort]
};
service = new google.maps.places.PlacesService(map);
service.nearbySearch(request, callback);
function callback(results, status) {
if (status == google.maps.places.PlacesServiceStatus.OK) {
for (var i = 0; i < results.length; i++) {
var place = results[i];
createMarker(results[i], building);
}
}
}
function createMarker(place) {
new google.maps.Marker({
icon: icon,
position: place.geometry.location,
map: map
});
}
}
并且这个函数在initmap函数内部(构建映射)我不能把它从这个函数中删除,因为它会给我一个错误。