diff options
Diffstat (limited to 'design/templates/archives/map_data.html')
-rw-r--r-- | design/templates/archives/map_data.html | 111 |
1 files changed, 111 insertions, 0 deletions
diff --git a/design/templates/archives/map_data.html b/design/templates/archives/map_data.html new file mode 100644 index 0000000..a58de05 --- /dev/null +++ b/design/templates/archives/map_data.html @@ -0,0 +1,111 @@ +{% load typogrify %} +{% load truncateletters %} +{% load slugify_under %} + + // center on a country + function focusCountry(latitude, longitude, zoom) { + map.setZoom(zoom); + map.panTo(new google.maps.LatLng(latitude, longitude)); + }; + + {% for route in route_list %} + var {{route.template_var_name}} = [ + {% for point in route.geometry.coords%} + new google.maps.LatLng({{point.1}}, {{point.0}}){% if forloop.last%}{%else%},{%endif%} + {% endfor %} + ]; + {% endfor %} + function showRoute(route, zoom, latitude, longitude) { + var routePath = new google.maps.Polyline({ + path: eval(route), + strokeColor: "#FF0000", + strokeOpacity: 1.0, + strokeWeight: 2 + }); + map.setZoom(zoom); + map.panTo(new google.maps.LatLng(latitude, longitude)); + routePath.setMap(map); + return false; + }; +var map; +function initialize() { + + //custom marker + var image = new google.maps.MarkerImage('http://luxagraf.net/media/img/marker-entry.png', + new google.maps.Size(15, 26), + new google.maps.Point(0, 0), + new google.maps.Point(7, 26) + ); + //custom marker shadow + var shadow = new google.maps.MarkerImage('http://luxagraf.net/media/img/shadow.png', + new google.maps.Size(37, 34), + new google.maps.Point(0,0), + new google.maps.Point(8, 34) + ); + + + //check for a permalink + var location = window.location.hash; + //find a centerpoint + var pts = new Array(); + {%for c in country_list%}pts[{{forloop.counter0}}] = ["#{{c.slug}}", {{c.lat}},{{c.lon}},{{c.zoom_level}}];{% endfor %} + {%for c in region_list%}pts[pts.length] = ["#{{c.slug}}", {{c.lat}},{{c.lon}},{{c.zoom_level}}];{% endfor %} + if (location.length>1) { + for (i=0;i<pts.length;i++) { + if (location == pts[i][0]) { + centerCoord = new google.maps.LatLng(pts[i][1],pts[i][2]); + zoom = pts[i][3]; + break; + } else { + centerCoord = new google.maps.LatLng(19.311143,2.460938); + zoom = 2; + } + } + } else { + centerCoord = new google.maps.LatLng(19.311143,2.460938); + zoom = 2; + } + //set up map options + var mapOptions = { + zoom: zoom, + center: centerCoord, + mapTypeId: google.maps.MapTypeId.TERRAIN, + disableDefaultUI: true, + navigationControl: true, + navigationControlOptions: {style: google.maps.NavigationControlStyle.SMALL} + }; + //create map + map = new google.maps.Map(document.getElementById('map-canvas'), mapOptions); + + + //loop through and set up markers/info windows + + {% for entry in object_list %} + var marker_{{entry.title|truncatewords:2|slugify_under}} = new google.maps.Marker({ + position: new google.maps.LatLng({{entry.latitude}}, {{entry.longitude}}), + map: map, + shadow: shadow, + icon: image + }); + + var c_{{entry.title|truncatewords:2|slugify_under}} = '<div class="infowin"><h4>{{entry.title}}<\/h4><span class="date blok">{{entry.pub_date|date:"F j, Y"}} ({% if entry.location.state.country.name == "United States" %}{{entry.location.name|smartypants|safe}}, {{entry.location.state.name}}){%else%}{{entry.location.name|smartypants|safe}}, {{entry.location.state.country.name}}){%endif%}<\/span><p><img src="{{entry.get_thumbnail_url}}" height="100" alt="{{ entry.title }}" style="float: left; border: #000 10px solid; margin-right: 8px; margin-bottom: 4px; height: 100px;" \/>{{entry.dek|escapejs}} <a href="{{entry.get_absolute_url}}">Read it »<\/a><\/p><\/div>'; + + google.maps.event.addListener(marker_{{entry.title|truncatewords:2|slugify_under}}, 'click', function() { + openWin(c_{{entry.title|truncatewords:2|slugify_under}},marker_{{entry.title|truncatewords:2|slugify_under}}); + }); + + {% endfor %} + // create an empty info window instance, set max width + var infowindow = new google.maps.InfoWindow({ + content: ' ', + maxWidth: 400 + }); + //function to handle click event and display single info window + function openWin(content, marker) { + infowindow.close(); + infowindow.setContent(content); + infowindow.open(map,marker); + }; + + +} |