我在谷歌地图上遇到了Geocoder的麻烦。
主要的想法是,我有一个包含屋苑(公寓,房屋,......)的清单,我想在一些屋村附近寻找兴趣点(POIs;大学,咖啡馆等)给定范围。没问题,工作正常。
但我现在要做的是,“删除”,或者更好地说,使标记不可见,在附近的给定范围内没有兴趣点。 在下面的代码中,您将看到,我在for循环中拥有地理编码,并且对于它获得的每个属性,它都设置了POI。现在我想放弃它此时使用的庄园,检查附近是否有结果,如果没有,它应该将地图上的庄园标记设置为空。问题是,我不能放弃庄园的id,所以我可以用这个特定的ID将标记设置为null。
现在它部分工作,但它总是随机删除标记。 (目前用一些计数器来删除索引...但我想用id删除它。)
所以,主要的问题是,如何将for循环中的当前ID移交给回调并删除具有相同ID的标记?
为了理解代码,我应该说“immo”或“immobilien”是庄园的德语单词。
以下是代码:
function geocodePoi(geocoder, resultsMap) {
var poiCat = document.getElementById("poi").value;
poiList.push(poiCat);
var address = document.getElementById('address').value;
var poi = document.getElementById('poi').value;
var radius = document.getElementById('range').value;
var poiArray = [];
poiArray.push(poi);
var latlng;
geocoder.geocode({'address': address}, function (results, status) {
if (status === google.maps.GeocoderStatus.OK) {
resultsMap.setCenter(results[0].geometry.location);
latlng = results[0].geometry.location;
latlngDic = {lat: latlng.lat(), lng: latlng.lng()};
infowindow = new google.maps.InfoWindow();
for (i = 0; i < immobilien.length; i++) {
currentImmo = immobilien[i].id;
currentImmoList.push(currentImmo);
var service = new google.maps.places.PlacesService(map);
service.nearbySearch({
location: new google.maps.LatLng(immobilien[i].longitude,
immobilien[i].latitude),
radius: radius,
types: poiArray
}, callback);
}
}
else {
alert('Geocode was not successful for the following reason: ' + status);
}
});
}
function callback(results, status) {
if (status === "ZERO_RESULTS") {
setMapOnAllImmo(null, count);
count = count + 1;
}
if (status === google.maps.places.PlacesServiceStatus.OK) {
for (var i = 0; i < results.length; i++) {
createMarker(results[i]);
}
count += 1;
}
}