Can I remove just the popup bubbles of POI's in Google Maps API v3?
So I'm working on a new web app that has a big focus on maps. Using Google Maps API v3 and really happy with it but noticed that the points of interest (POI's) have automatically bubbles with more details and a link to the Google Places page. I don't want these. Here is my code:
map = new google.maps.Map(document.getElementById("map"), {
center:new google.maps.LatLng(default_latitude,default_longitude),
zoom:11,
mapTypeId:google.maps.MapTypeId.ROADMAP,
mapTypeControl:false,
panControl:false
});
I know you can remove the POI's entirely. Here is my code for that:
map = new google.maps.Map(document.getElementById("map"),{
center:new google.maps.LatLng(default_latitude,default_longitude),
zoom:11,
mapTypeId:google.maps.MapTypeId.ROADMAP,
mapTypeControl:false,
panControl:false,
styles:[{
featureType:"poi",
elementType:"labels",
stylers:[{
visibility:"off"
}]
}]
});
This removes everything entirely and I still would like to see the labels as I think they bring value but just think the bubbles are too much of a distraction.
For reference here is the bubble I want to remove:
And here is the same map with POI's removed entirely:
Solution 1:
Editor's note: this answer was applicable until version 3.23. Since version 3.24 released in 2016, you can use clickableIcons
map option. See xomena's answer.
Version ~3.12 fix. Demo
Here is a new patch that works again. I have tested it with version 3.14.
Now we gonna patch set()
instead of open()
.
function fixInfoWindow() {
// Here we redefine the set() method.
// If it is called for map option, we hide the InfoWindow, if "noSuppress"
// option is not true. As Google Maps does not know about this option,
// its InfoWindows will not be opened.
var set = google.maps.InfoWindow.prototype.set;
google.maps.InfoWindow.prototype.set = function (key, val) {
if (key === 'map' && ! this.get('noSuppress')) {
console.warn('This InfoWindow is suppressed.');
console.log('To enable it, set "noSuppress" option to true.');
return;
}
set.apply(this, arguments);
}
}
What you have to do is set option noSuppress
to true
for your own InfoWindow
's in order to open them, for example:
var popup = new google.maps.InfoWindow({
content: 'Bang!',
noSuppress: true
});
popup.setPosition(new google.maps.LatLng(-34.397, 150.644));
popup.open(map);
or:
var popup = new google.maps.InfoWindow({
content: 'Bang!',
});
popup.set('noSuppress', true);
popup.setPosition(new google.maps.LatLng(-34.397, 150.644));
popup.open(map);
Solution 2:
Starting from version 3.24 the Maps JavaScript API has a property clickableIcons in MapOptions object:
https://developers.google.com/maps/documentation/javascript/3.exp/reference#MapOptions
You can use this property to turn off clickable icons on maps by setting the clickableIcons property to false. Also exists a setClickableIcons() method.
Please look at this example: http://jsbin.com/liyamecoqa/edit?html,output