| 1 | {{""" |
|---|
| 2 | this is an example of usage of google map |
|---|
| 3 | the web2py action should be something like: |
|---|
| 4 | |
|---|
| 5 | def map(): |
|---|
| 6 | return dict( |
|---|
| 7 | googlemap_key='...', |
|---|
| 8 | center_latitude = 41.878, |
|---|
| 9 | center_longitude = -87.629, |
|---|
| 10 | scale = 7, |
|---|
| 11 | maker = lambda point: A(row.id,_href='...') |
|---|
| 12 | points = db(db.point).select() where a points have latitute and longitude |
|---|
| 13 | ) |
|---|
| 14 | |
|---|
| 15 | the corresponding views/defaut/map.html should be something like: |
|---|
| 16 | |
|---|
| 17 | \{\{extend 'layout.html'\}\} |
|---|
| 18 | <center>\{\{include 'generic.map'\}\}</center> |
|---|
| 19 | |
|---|
| 20 | """}} |
|---|
| 21 | <script src="http://maps.google.com/maps?file=api&v=2&key={{=googlemap_key}}" type="text/javascript"></script> |
|---|
| 22 | <script type="text/javascript"> |
|---|
| 23 | //<![CDATA[ |
|---|
| 24 | function load() { |
|---|
| 25 | if (GBrowserIsCompatible()) { |
|---|
| 26 | var map = new GMap2(document.getElementById("map")); |
|---|
| 27 | map.addControl(new GSmallMapControl()); |
|---|
| 28 | map.addControl(new GMapTypeControl()); |
|---|
| 29 | map.setCenter(new GLatLng({{=center_latitude}}, |
|---|
| 30 | {{=center_longitude}}), {{=scale}}); |
|---|
| 31 | // Create a base icon for all of our markers that specifies the |
|---|
| 32 | // shadow, icon dimensions, etc. |
|---|
| 33 | var baseIcon = new GIcon(); |
|---|
| 34 | baseIcon.shadow = "http://www.google.com/mapfiles/shadow50.png"; |
|---|
| 35 | baseIcon.iconSize = new GSize(20, 34); |
|---|
| 36 | baseIcon.shadowSize = new GSize(37, 34); |
|---|
| 37 | baseIcon.iconAnchor = new GPoint(9, 34); |
|---|
| 38 | baseIcon.infoWindowAnchor = new GPoint(9, 2); |
|---|
| 39 | baseIcon.infoShadowAnchor = new GPoint(18, 14); |
|---|
| 40 | var blueIcon = new GIcon(); |
|---|
| 41 | blueIcon.image = "http://www.google.com/intl/en_us/mapfiles/ms/micons/blue-dot.png"; |
|---|
| 42 | blueIcon.shadow = "http://www.google.com/mapfiles/shadow50.png"; |
|---|
| 43 | blueIcon.iconSize = new GSize(37, 34); |
|---|
| 44 | blueIcon.shadowSize = new GSize(37, 34); |
|---|
| 45 | blueIcon.iconAnchor = new GPoint(9, 34); |
|---|
| 46 | blueIcon.infoWindowAnchor = new GPoint(9, 2); |
|---|
| 47 | blueIcon.infoShadowAnchor = new GPoint(18, 14); |
|---|
| 48 | |
|---|
| 49 | function createMarker(point, i, message) { |
|---|
| 50 | // Set up our GMarkerOptions object |
|---|
| 51 | if(i==0) markerOptions = { icon:blueIcon }; |
|---|
| 52 | else markerOptions= {} |
|---|
| 53 | var marker = new GMarker(point, markerOptions); |
|---|
| 54 | GEvent.addListener(marker, "click", function() { |
|---|
| 55 | marker.openInfoWindowHtml(message); |
|---|
| 56 | }); |
|---|
| 57 | return marker; |
|---|
| 58 | } |
|---|
| 59 | {{for point in points:}}{{if point.latitude and point.longitude:}} |
|---|
| 60 | var point = new GLatLng({{=point.latitude}},{{=point.longitude}}); |
|---|
| 61 | map.addOverlay(createMarker(point, 0, |
|---|
| 62 | '{{=point.get('map_marker',maker(point))}}')); |
|---|
| 63 | {{pass}}{{pass}} |
|---|
| 64 | } |
|---|
| 65 | } |
|---|
| 66 | //]]> |
|---|
| 67 | </script> |
|---|
| 68 | <div id="map" style="width: 800px; height: 500px"></div> |
|---|
| 69 | <script>load();</script> |
|---|