Google poi infoWindow hack
by kasheftin
HTML
<script src="https://maps.google.com/maps/api/js?sensor=false"></script>
<button class="btn-open">Open...</button>
<div id="map_canvas" style="position:absolute; display:block; top:40px; bottom:0; left:0; right:0;"></div>
CSS
html {
height: 100%
}
body {
height: 100%;
margin: 0px;
padding: 0px
}
#map_canvas {
height: 100%
}
JavaScript
//the solution of http://stackoverflow.com/questions/7950030/can-i-remove-just-the-popup-bubbles-of-pois-in-google-maps-api-v3/11929651
//------------------------------------------
//Magic fix:
function fixInfoWindow() {
//Here we redefine set() method.
//If it is called for map option, we hide InfoWindow, if "noSupress" option isnt true.
//As Google doesn't 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) {
var self = this;
if (key === "map") {
if (!this.get("noSupress")) {
var link = $("<a href='#'>add to map</a>");
link.click(function() {
console.log("link clicked",self,self.getContent(),self.content);
});
$(this.content).find("div.gm-rev").append($("<div style='float:right;'></div>").append(link));
}
}
set.apply(this, arguments);
}
}
//------------------------------------------
//our application:
function helloWorld() {
var latlng = new google.maps.LatLng(-34.398, 150.650);
var myOptions = {
zoom: 9,
center: latlng,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
var map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
var popup = new google.maps.InfoWindow({
content: 'Okay...',
noSupress: true //<-- here we tell InfoWindow to bypass our blocker
});
popup.setPosition(new google.maps.LatLng(-34.397, 150.644));
$('.btn-open').click(function () {
popup.open(map);
});
}
//applying our hack
fixInfoWindow();
//running map application
helloWorld();