Statistics
| Branch: | Tag: | Revision:

root / static / js / world-map.js @ 242932f3

History | View | Annotate | Download (7.3 kB)

1 242932f3 Kroustouris Stauros
        var lat = "";
2 242932f3 Kroustouris Stauros
        var lng = "";
3 242932f3 Kroustouris Stauros
        var zoomLevel = 6;
4 242932f3 Kroustouris Stauros
        var latlng;
5 242932f3 Kroustouris Stauros
        var map = '';
6 242932f3 Kroustouris Stauros
        var bounds = '';
7 242932f3 Kroustouris Stauros
        var image = '';
8 242932f3 Kroustouris Stauros
        var infoWindow;
9 242932f3 Kroustouris Stauros
        addr = {};
10 242932f3 Kroustouris Stauros
        var styles;
11 242932f3 Kroustouris Stauros
        var pinImg;
12 242932f3 Kroustouris Stauros
        var pinsUrl;
13 242932f3 Kroustouris Stauros
        var cityImg;
14 242932f3 Kroustouris Stauros
        var countryImg;
15 242932f3 Kroustouris Stauros
16 242932f3 Kroustouris Stauros
        function initialize() {
17 242932f3 Kroustouris Stauros
                image = new google.maps.MarkerImage(pinImg,
18 242932f3 Kroustouris Stauros
                // This marker is 29 pixels wide by 40 pixels tall.
19 242932f3 Kroustouris Stauros
                new google.maps.Size(29, 40),
20 242932f3 Kroustouris Stauros
                // The origin for this image is 0,0.
21 242932f3 Kroustouris Stauros
                new google.maps.Point(0, 0),
22 242932f3 Kroustouris Stauros
                // The anchor for this image is the base of the flagpole at 18,42.
23 242932f3 Kroustouris Stauros
                new google.maps.Point(14, 40));
24 242932f3 Kroustouris Stauros
25 242932f3 Kroustouris Stauros
                var styleArray = [ {
26 242932f3 Kroustouris Stauros
                        featureType : "all",
27 242932f3 Kroustouris Stauros
                        stylers : [ {
28 242932f3 Kroustouris Stauros
                                saturation : -60
29 242932f3 Kroustouris Stauros
                        }, {
30 242932f3 Kroustouris Stauros
                                gamma : 1.00
31 242932f3 Kroustouris Stauros
                        } ]
32 242932f3 Kroustouris Stauros
                }, {
33 242932f3 Kroustouris Stauros
                        featureType : "poi.business",
34 242932f3 Kroustouris Stauros
                        elementType : "labels",
35 242932f3 Kroustouris Stauros
                        stylers : [ {
36 242932f3 Kroustouris Stauros
                                visibility : "off"
37 242932f3 Kroustouris Stauros
                        } ]
38 242932f3 Kroustouris Stauros
                }, {
39 242932f3 Kroustouris Stauros
                        "featureType" : "transit.line",
40 242932f3 Kroustouris Stauros
                        "elementType" : "geometry",
41 242932f3 Kroustouris Stauros
                        "stylers" : [ {
42 242932f3 Kroustouris Stauros
                                "visibility" : "off"
43 242932f3 Kroustouris Stauros
                        } ]
44 242932f3 Kroustouris Stauros
                }, {
45 242932f3 Kroustouris Stauros
                        "featureType" : "poi",
46 242932f3 Kroustouris Stauros
                        "elementType" : "all",
47 242932f3 Kroustouris Stauros
                        "stylers" : [ {
48 242932f3 Kroustouris Stauros
                                "visibility" : "off"
49 242932f3 Kroustouris Stauros
                        } ]
50 242932f3 Kroustouris Stauros
                }, {
51 242932f3 Kroustouris Stauros
                        'featureType' : "administrative.country",
52 242932f3 Kroustouris Stauros
                        'elementType' : "labels",
53 242932f3 Kroustouris Stauros
                        'stylers' : [ {
54 242932f3 Kroustouris Stauros
                                'visibility' : "off"
55 242932f3 Kroustouris Stauros
                        } ]
56 242932f3 Kroustouris Stauros
                }
57 242932f3 Kroustouris Stauros
58 242932f3 Kroustouris Stauros
                ];
59 242932f3 Kroustouris Stauros
60 242932f3 Kroustouris Stauros
        geocoder = new google.maps.Geocoder();
61 242932f3 Kroustouris Stauros
        if( /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent) ) {
62 242932f3 Kroustouris Stauros
                isDraggable = false;
63 242932f3 Kroustouris Stauros
                isScrollable = true;
64 242932f3 Kroustouris Stauros
        } else {
65 242932f3 Kroustouris Stauros
                isDraggable = true;
66 242932f3 Kroustouris Stauros
                isScrollable = false;
67 242932f3 Kroustouris Stauros
        }
68 242932f3 Kroustouris Stauros
        var mapOptions = {
69 242932f3 Kroustouris Stauros
                        center : latlng,
70 242932f3 Kroustouris Stauros
                        zoom : zoomLevel,
71 242932f3 Kroustouris Stauros
                        mapTypeId : google.maps.MapTypeId.ROADMAP,
72 242932f3 Kroustouris Stauros
                        styles : styleArray,
73 242932f3 Kroustouris Stauros
                        mapTypeId : google.maps.MapTypeId.ROADMAP,
74 242932f3 Kroustouris Stauros
                        mapTypeControlOptions : {
75 242932f3 Kroustouris Stauros
                                style : google.maps.MapTypeControlStyle.DEFAULT
76 242932f3 Kroustouris Stauros
                        },
77 242932f3 Kroustouris Stauros
                        navigationControl : true,
78 242932f3 Kroustouris Stauros
                        mapTypeControl : false,
79 242932f3 Kroustouris Stauros
                        scrollwheel: isScrollable,
80 242932f3 Kroustouris Stauros
                        draggable: isDraggable
81 242932f3 Kroustouris Stauros
                };
82 242932f3 Kroustouris Stauros
                map = new google.maps.Map(document.getElementById("map_canvas"),
83 242932f3 Kroustouris Stauros
                                mapOptions);
84 242932f3 Kroustouris Stauros
85 242932f3 Kroustouris Stauros
86 242932f3 Kroustouris Stauros
                var homeControlDiv = document.createElement('div');
87 242932f3 Kroustouris Stauros
                homeControlDiv.className='roundButtonHolder';
88 242932f3 Kroustouris Stauros
                homeControlDiv.id="locationButton";
89 242932f3 Kroustouris Stauros
                var homeControl = new HomeControl(homeControlDiv, map);
90 242932f3 Kroustouris Stauros
91 242932f3 Kroustouris Stauros
                homeControlDiv.index = 1;
92 242932f3 Kroustouris Stauros
                map.controls[google.maps.ControlPosition.TOP_LEFT].push(homeControlDiv);
93 242932f3 Kroustouris Stauros
94 242932f3 Kroustouris Stauros
                bounds = new google.maps.LatLngBounds();
95 242932f3 Kroustouris Stauros
                infoWindow = new google.maps.InfoWindow();
96 242932f3 Kroustouris Stauros
                google.maps.event.addListener(map, 'idle', function() {
97 242932f3 Kroustouris Stauros
                        center = map.getCenter();
98 242932f3 Kroustouris Stauros
                        geocode(center);
99 242932f3 Kroustouris Stauros
                        zoom = map.getZoom();
100 242932f3 Kroustouris Stauros
                        if (zoom > 12){
101 242932f3 Kroustouris Stauros
                                $("#showCityBtn").show();
102 242932f3 Kroustouris Stauros
                                $("#showCountryBtn").hide();
103 242932f3 Kroustouris Stauros
                        }
104 242932f3 Kroustouris Stauros
                        else if ((zoom <= 12) && (zoom > 7)){
105 242932f3 Kroustouris Stauros
                                $("#showCityBtn").hide();
106 242932f3 Kroustouris Stauros
                                $("#showCountryBtn").show();
107 242932f3 Kroustouris Stauros
                        }
108 242932f3 Kroustouris Stauros
                        else {
109 242932f3 Kroustouris Stauros
                                $("#showCityBtn").hide();
110 242932f3 Kroustouris Stauros
                                $("#showCountryBtn").hide();
111 242932f3 Kroustouris Stauros
                        }
112 242932f3 Kroustouris Stauros
                });
113 242932f3 Kroustouris Stauros
114 242932f3 Kroustouris Stauros
115 242932f3 Kroustouris Stauros
        }
116 242932f3 Kroustouris Stauros
117 242932f3 Kroustouris Stauros
        var markers = new Array();
118 242932f3 Kroustouris Stauros
        function placeMarkers() {
119 242932f3 Kroustouris Stauros
                $.get(
120 242932f3 Kroustouris Stauros
                        pinsUrl,
121 242932f3 Kroustouris Stauros
                        function(data) {
122 242932f3 Kroustouris Stauros
                                $.each(
123 242932f3 Kroustouris Stauros
                                        data,
124 242932f3 Kroustouris Stauros
                                        function(index, jsonMarker) {
125 242932f3 Kroustouris Stauros
                                                var marker = createMarker(jsonMarker);
126 242932f3 Kroustouris Stauros
                                                if (marker) {
127 242932f3 Kroustouris Stauros
                                                        bounds.extend(marker.position);
128 242932f3 Kroustouris Stauros
                                                        markers.push(marker);
129 242932f3 Kroustouris Stauros
                                                        google.maps.event.addListener(
130 242932f3 Kroustouris Stauros
                                                                marker,
131 242932f3 Kroustouris Stauros
                                                                'click',
132 242932f3 Kroustouris Stauros
                                                                function() {
133 242932f3 Kroustouris Stauros
                                                                        infoWindow.setContent(jsonMarker.text);
134 242932f3 Kroustouris Stauros
                                                                        infoWindow.open(
135 242932f3 Kroustouris Stauros
                                                                                map,
136 242932f3 Kroustouris Stauros
                                                                                marker
137 242932f3 Kroustouris Stauros
                                                                        );
138 242932f3 Kroustouris Stauros
                                                                }
139 242932f3 Kroustouris Stauros
                                                        );
140 242932f3 Kroustouris Stauros
                                                }
141 242932f3 Kroustouris Stauros
                                        }
142 242932f3 Kroustouris Stauros
                                );
143 242932f3 Kroustouris Stauros
                                var mcOptions = {
144 242932f3 Kroustouris Stauros
                                        gridSize : 60,
145 242932f3 Kroustouris Stauros
                                        maxZoom : null,
146 242932f3 Kroustouris Stauros
                                        styles : styles
147 242932f3 Kroustouris Stauros
                                };
148 242932f3 Kroustouris Stauros
149 242932f3 Kroustouris Stauros
                                var markerCluster = new MarkerClusterer(
150 242932f3 Kroustouris Stauros
                                        map,
151 242932f3 Kroustouris Stauros
                                        markers,
152 242932f3 Kroustouris Stauros
                                        mcOptions
153 242932f3 Kroustouris Stauros
                                );
154 242932f3 Kroustouris Stauros
                                map.fitBounds(bounds);
155 242932f3 Kroustouris Stauros
                        }
156 242932f3 Kroustouris Stauros
                );
157 242932f3 Kroustouris Stauros
        }
158 242932f3 Kroustouris Stauros
159 242932f3 Kroustouris Stauros
        function createMarker(markerObj) {
160 242932f3 Kroustouris Stauros
                var latLng = new google.maps.LatLng(markerObj.lat, markerObj.lng);
161 242932f3 Kroustouris Stauros
                var marker = new google.maps.Marker({
162 242932f3 Kroustouris Stauros
                        'position' : latLng,
163 242932f3 Kroustouris Stauros
                        'map' : map,
164 242932f3 Kroustouris Stauros
                        'icon' : image,
165 242932f3 Kroustouris Stauros
                });
166 242932f3 Kroustouris Stauros
                return marker
167 242932f3 Kroustouris Stauros
        }
168 242932f3 Kroustouris Stauros
169 242932f3 Kroustouris Stauros
        function clusterMarkers(markers) {
170 242932f3 Kroustouris Stauros
                var markerCluster = new MarkerClusterer(map, markers);
171 242932f3 Kroustouris Stauros
        }
172 242932f3 Kroustouris Stauros
173 242932f3 Kroustouris Stauros
174 242932f3 Kroustouris Stauros
        function geocode(position){
175 242932f3 Kroustouris Stauros
                addr = {};
176 242932f3 Kroustouris Stauros
                geocoder
177 242932f3 Kroustouris Stauros
                .geocode(
178 242932f3 Kroustouris Stauros
                                {
179 242932f3 Kroustouris Stauros
                                        'latLng' : position
180 242932f3 Kroustouris Stauros
                                },
181 242932f3 Kroustouris Stauros
                                function(results, status) {
182 242932f3 Kroustouris Stauros
                                        if (status == google.maps.GeocoderStatus.OK) {
183 242932f3 Kroustouris Stauros
                                                if (results.length >= 1) {
184 242932f3 Kroustouris Stauros
                                                        for ( var ii = 0; ii < results[0].address_components.length; ii++) {
185 242932f3 Kroustouris Stauros
                                                                var street_number = route = street = city = state = zipcode = country = formatted_address = '';
186 242932f3 Kroustouris Stauros
                                                                var types = results[0].address_components[ii].types
187 242932f3 Kroustouris Stauros
                                                                                .join(",");
188 242932f3 Kroustouris Stauros
                                                                if (types == "sublocality,political"
189 242932f3 Kroustouris Stauros
                                                                                || types == "locality,political"
190 242932f3 Kroustouris Stauros
                                                                                || types == "neighborhood,political"
191 242932f3 Kroustouris Stauros
                                                                                || types == "political") {
192 242932f3 Kroustouris Stauros
                                                                        addr.city = (city == '' || types == "locality,political") ? results[0].address_components[ii].long_name
193 242932f3 Kroustouris Stauros
                                                                                        : city;
194 242932f3 Kroustouris Stauros
                                                                }
195 242932f3 Kroustouris Stauros
                                                                if (types == "country,political") {
196 242932f3 Kroustouris Stauros
                                                                        addr.country = results[0].address_components[ii].long_name;
197 242932f3 Kroustouris Stauros
                                                                }
198 242932f3 Kroustouris Stauros
                                                        }
199 242932f3 Kroustouris Stauros
                                                }
200 242932f3 Kroustouris Stauros
                                        }
201 242932f3 Kroustouris Stauros
                                });
202 242932f3 Kroustouris Stauros
        }
203 242932f3 Kroustouris Stauros
204 242932f3 Kroustouris Stauros
        function codeAddress(address) {
205 242932f3 Kroustouris Stauros
            geocoder.geocode( { 'address': address}, function(results, status) {
206 242932f3 Kroustouris Stauros
              if (status == google.maps.GeocoderStatus.OK) {
207 242932f3 Kroustouris Stauros
                map.setCenter(results[0].geometry.location);
208 242932f3 Kroustouris Stauros
                    map.fitBounds(results[0].geometry.bounds)
209 242932f3 Kroustouris Stauros
              } else {
210 242932f3 Kroustouris Stauros
                //alert("Geocode was not successful for the following reason: " + status);
211 242932f3 Kroustouris Stauros
              }
212 242932f3 Kroustouris Stauros
            });
213 242932f3 Kroustouris Stauros
          }
214 242932f3 Kroustouris Stauros
215 242932f3 Kroustouris Stauros
        function HomeControl(controlDiv, map) {
216 242932f3 Kroustouris Stauros
217 242932f3 Kroustouris Stauros
                  // Set CSS styles for the DIV containing the control
218 242932f3 Kroustouris Stauros
                  // Setting padding to 5 px will offset the control
219 242932f3 Kroustouris Stauros
                  // from the edge of the map.
220 242932f3 Kroustouris Stauros
                  controlDiv.style.padding = '5px';
221 242932f3 Kroustouris Stauros
222 242932f3 Kroustouris Stauros
                  // Set CSS for the control border.
223 242932f3 Kroustouris Stauros
                  var controlUI = document.createElement('button');
224 242932f3 Kroustouris Stauros
                  controlUI.className='btn btn-warning roundButton';
225 242932f3 Kroustouris Stauros
                  controlUI.id = "showCityBtn";
226 242932f3 Kroustouris Stauros
                  extraCSS = 'background-image: url(' + cityImg +');background-position: center center; background-repeat: no-repeat;';
227 242932f3 Kroustouris Stauros
                  controlUI.style.cssText='display:none; cursor:pointer; white-space:nowrap; position:absolute; '+extraCSS;
228 242932f3 Kroustouris Stauros
                  controlUI.title = "City View";
229 242932f3 Kroustouris Stauros
230 242932f3 Kroustouris Stauros
                  // Set CSS for the control border.
231 242932f3 Kroustouris Stauros
                  var controlUI2 = document.createElement('button');
232 242932f3 Kroustouris Stauros
                  controlUI2.className='btn btn-warning roundButton';
233 242932f3 Kroustouris Stauros
                  controlUI2.id = "showCountryBtn";
234 242932f3 Kroustouris Stauros
                  extraCSS2 = 'background-image: url('+ countryImg + ');background-position: center center; background-repeat: no-repeat;';
235 242932f3 Kroustouris Stauros
                  controlUI2.style.cssText='display:none; cursor:pointer; white-space:nowrap; position:absolute; '+extraCSS2;
236 242932f3 Kroustouris Stauros
                  controlUI2.title = "Country View";
237 242932f3 Kroustouris Stauros
238 242932f3 Kroustouris Stauros
                  controlDiv.appendChild(controlUI);
239 242932f3 Kroustouris Stauros
                  controlDiv.appendChild(controlUI2);
240 242932f3 Kroustouris Stauros
241 242932f3 Kroustouris Stauros
                  // Setup the click event listeners: simply set the map to Chicago.
242 242932f3 Kroustouris Stauros
                  google.maps.event.addDomListener(controlUI, 'click', function() {
243 242932f3 Kroustouris Stauros
                    codeAddress(addr.city+','+addr.country);
244 242932f3 Kroustouris Stauros
                  });
245 242932f3 Kroustouris Stauros
                  google.maps.event.addDomListener(controlUI2, 'click', function() {
246 242932f3 Kroustouris Stauros
                            codeAddress(addr.country);
247 242932f3 Kroustouris Stauros
                          });
248 242932f3 Kroustouris Stauros
249 242932f3 Kroustouris Stauros
                }
250 242932f3 Kroustouris Stauros
251 242932f3 Kroustouris Stauros
        $(document).ready(function() {
252 242932f3 Kroustouris Stauros
                mapDiv = $('#map_canvas');
253 242932f3 Kroustouris Stauros
                lat = mapDiv.data('center-lat');
254 242932f3 Kroustouris Stauros
                lng = mapDiv.data('center-lng');
255 242932f3 Kroustouris Stauros
                lat = parseFloat(lat.toString().replace(",","."));
256 242932f3 Kroustouris Stauros
                lng = parseFloat(lng.toString().replace(",","."));
257 242932f3 Kroustouris Stauros
                latlng = new google.maps.LatLng(lat,lng);
258 242932f3 Kroustouris Stauros
                group = mapDiv.data('group');
259 242932f3 Kroustouris Stauros
                pinImg = mapDiv.data('pin');
260 242932f3 Kroustouris Stauros
                pinsUrl = mapDiv.data('url');
261 242932f3 Kroustouris Stauros
                cityImg = mapDiv.data('city');
262 242932f3 Kroustouris Stauros
                countryImg = mapDiv.data('country');
263 242932f3 Kroustouris Stauros
                styles = [ {
264 242932f3 Kroustouris Stauros
                        url : group,
265 242932f3 Kroustouris Stauros
                        height : 54,
266 242932f3 Kroustouris Stauros
                        width : 63,
267 242932f3 Kroustouris Stauros
                        textColor : '#ffffff',
268 242932f3 Kroustouris Stauros
                        textSize : 11
269 242932f3 Kroustouris Stauros
                }, {
270 242932f3 Kroustouris Stauros
                        url : group,
271 242932f3 Kroustouris Stauros
                        height : 54,
272 242932f3 Kroustouris Stauros
                        width : 63,
273 242932f3 Kroustouris Stauros
                        textColor : '#ffffff',
274 242932f3 Kroustouris Stauros
                        textSize : 11
275 242932f3 Kroustouris Stauros
                }, {
276 242932f3 Kroustouris Stauros
                        url : group,
277 242932f3 Kroustouris Stauros
                        height : 54,
278 242932f3 Kroustouris Stauros
                        width : 63,
279 242932f3 Kroustouris Stauros
                        textColor : '#ffffff',
280 242932f3 Kroustouris Stauros
                        textSize : 11
281 242932f3 Kroustouris Stauros
                } ];
282 242932f3 Kroustouris Stauros
                initialize();
283 242932f3 Kroustouris Stauros
                marks = placeMarkers();
284 242932f3 Kroustouris Stauros
                clusterMarkers(marks);
285 242932f3 Kroustouris Stauros
        });