In google map v3, we can create a popup like above. The popup in google map v3 is called ‘info window‘. So in this tutorial you will learn how to create info window and how to edit too.
Requirement :
1) jquery.js
2) google-map.js
– CREATE MARKER AND INFO WINDOW
1) First, copy the following script to create marker and info window :
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script> <script src="https://maps.googleapis.com/maps/api/js?v=3.exp"></script> <script> var map; var marker_name = 'null'; /** * FIRST LOAD THE MAP */ function initialize() { // SETUP LOCATION MAP var mapOptions = { zoom: 13, center: new google.maps.LatLng(-6.2858667, 106.8719382) }; map = new google.maps.Map(document.getElementById('map-canvas'), mapOptions); // CREATE MARKER BY CLICK/TAP ON MAP google.maps.event.addListener(map, 'click', function(event) { // nothing marker if( marker_name == 'null' ){ marker_name = 'a'; }else{ marker_name = String.fromCharCode( marker_name.charCodeAt(0) + 1 ); // a + 1 = b } // add parameter marker icons = 'http://maps.google.com/mapfiles/ms/icons/green-dot.png'; var location = event.latLng; window['marker_' + marker_name] = new google.maps.Marker({ position: location, map: map, icon: icons, draggable: true, title: '' + marker_name, }); // id marker var marker = window['marker_' + marker_name]; // event popup to show marker name var content = "<span class='destination_name' onclick='edit_marker_name(\"" + marker_name + "\", this)'>" + marker_name + "</span>"; var infowindow = new google.maps.InfoWindow(); google.maps.event.addListener(marker,'click', (function(marker,content,infowindow){ return function() { infowindow.setContent(content); infowindow.open(map,marker); }; })(marker,content,infowindow)); }); // end click map } // LOAD GOOGLE MAPS V3 google.maps.event.addDomListener(window, 'load', initialize); </script> </head> <body> <div id="map-canvas" style="width: 80%; height: 90%;"></div> </body>
Run that script, and then we can create any marker by clicking on the map.
– EDIT INFO WINDOW
– To create editable infowindow, we must adding the script below :
/** * EDIT MARKER NAME * @param a char (a,b,c,d ..), thiis <span> of marker name */ function edit_marker_name(a, thiis){ // show prompt dialog to edit marker name var edit_marker_name = prompt("Edit marker name", $(thiis).html()); // id marker marker = window['marker_' + a]; // update marker name if(edit_marker_name) { // update destination_name by live $(thiis).html(edit_marker_name); // update title marker marker.setTitle(edit_marker_name); // remove previously event click infowindow google.maps.event.clearListeners(marker, 'click'); // popup marker name var content = "<span class='destination_name' onclick='edit_marker_name(\"" + a + "\", this)'>" + edit_marker_name + "</span>"; var infowindow = new google.maps.InfoWindow(); google.maps.event.addListener(marker,'click', (function(marker,content,infowindow){ return function() { infowindow.setContent(content); infowindow.open(map,marker); }; })(marker,content,infowindow)); } }
So, the full script is like this :
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script> <script src="https://maps.googleapis.com/maps/api/js?v=3.exp"></script> <script> var map; var marker_name = 'null'; /** * EDIT MARKER NAME * @param a char (a,b,c,d ..), thiis <span> of marker name */ function edit_marker_name(a, thiis){ // show prompt dialog to edit marker name var edit_marker_name = prompt("Edit marker name", $(thiis).html()); // id marker marker = window['marker_' + a]; // update marker name if(edit_marker_name) { // update destination_name by live $(thiis).html(edit_marker_name); // update title marker marker.setTitle(edit_marker_name); // remove previously event click infowindow google.maps.event.clearListeners(marker, 'click'); // popup marker name var content = "<span class='destination_name' onclick='edit_marker_name(\"" + a + "\", this)'>" + edit_marker_name + "</span>"; var infowindow = new google.maps.InfoWindow(); google.maps.event.addListener(marker,'click', (function(marker,content,infowindow){ return function() { infowindow.setContent(content); infowindow.open(map,marker); }; })(marker,content,infowindow)); } } /** * FIRST LOAD THE MAP */ function initialize() { // SETUP LOCATION MAP var mapOptions = { zoom: 13, center: new google.maps.LatLng(-6.2858667, 106.8719382) }; map = new google.maps.Map(document.getElementById('map-canvas'), mapOptions); // CREATE MARKER BY CLICK/TAP ON MAP google.maps.event.addListener(map, 'click', function(event) { // nothing marker if( marker_name == 'null' ){ marker_name = 'a'; }else{ marker_name = String.fromCharCode( marker_name.charCodeAt(0) + 1 ); // a + 1 = b } // add parameter marker icons = 'http://maps.google.com/mapfiles/ms/icons/green-dot.png'; var location = event.latLng; window['marker_' + marker_name] = new google.maps.Marker({ position: location, map: map, icon: icons, draggable: true, title: '' + marker_name, }); // id marker var marker = window['marker_' + marker_name]; // event popup to show marker name var content = "<span class='destination_name' onclick='edit_marker_name(\"" + marker_name + "\", this)'>" + marker_name + "</span>"; var infowindow = new google.maps.InfoWindow(); google.maps.event.addListener(marker,'click', (function(marker,content,infowindow){ return function() { infowindow.setContent(content); infowindow.open(map,marker); }; })(marker,content,infowindow)); }); // end click map } // LOAD GOOGLE MAPS V3 google.maps.event.addDomListener(window, 'load', initialize); </script> </head> <body> <div id="map-canvas" style="width: 80%; height: 90%;"></div> </body>
You can edit the marker name by clicking on popup :
After edited, your marker name has been changed, like this :
You can try demo here
mas agar bisa naruh link di infowindow bagaimana caranya?
jadi setelah popup infowindow muncul teks info kalau di klik nge-link ke website tertentu.
terima kasih
script terakhir, line 82 :
var content = “<a href=”http://linknya”>link</a>”;