1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
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);
};
}
|