jQuery(function($){
"use strict";
$(".map-render")
.each(function(){
var map_type;
switch ($(this).attr('data-type')){
case 'HYBRID':
map_type=google.maps.MapTypeId.HYBRID;
break;
case 'SATELLITE':
map_type=google.maps.MapTypeId.SATELLITE;
break;
case 'TERRAIN':
map_type=google.maps.MapTypeId.TERRAIN;
break;
default:
map_type=google.maps.MapTypeId.ROADMAP;
break;
}
var controls=$.parseJSON(decodeURIComponent($(this)
.attr('data-controls')));
var style;
if(controls.style=='custom'){
style=$.parseJSON(decodeURIComponent(atob($(this)
.attr('data-template'))));
}else{
style=$.parseJSON(decodeURIComponent($(this)
.attr('data-template')));
}
var mapOptions={
zoom:parseInt($(this).attr('data-zoom')),
center:new google.maps.LatLng(-33.893836, 151.153470),
mapTypeId:map_type,
scrollwheel:controls.scrollwheel,
panControl:controls.pancontrol,
zoomControl:controls.zoomcontrol,
scaleControl:controls.scalecontrol,
mapTypeControl:controls.maptypecontrol,
streetViewControl:controls.streetviewcontrol,
overviewMapControl:controls.overviewmapcontrol,
styles:style
}
var map=new google.maps.Map($(this).get(0),
mapOptions);
if($(this).attr('data-coordinate').length > 0){
var coordinate=$(this).attr('data-coordinate')
.split(',');
if(coordinate.length==2){
map.setCenter(new google.maps.LatLng(coordinate[0], coordinate[1]));
}}else{
if($(this).attr('data-address').length > 0){
$
.getJSON('http://maps.google.com/maps/api/geocode/json?address='
+ $(this).attr('data-address')
+ '',
function(data){
var lat=data.results[0].geometry.location.lat;
var lng=data.results[0].geometry.location.lng;
map
.setCenter(new google.maps.LatLng(lat, lng));
});
}}
var locations=$.parseJSON(decodeURIComponent($(this)
.attr('data-marker')));
if(locations.markerlist!=undefined){
locations.markerlist=$
.parseJSON(decodeURIComponent(atob(locations.markerlist)));
if(Array.isArray(locations.markerlist)){
for (var i=0; i < locations.markerlist.length; i++){
if(locations.markerlist[i].title!=''||locations.markerlist[i].desc!='')
locations.markerdesc='<div class="info-content"><h5>'
+ locations.markerlist[i].title
+ '</h5><span>'
+ locations.markerlist[i].desc
+ '</span></div>';
locations.markercoordinate=locations.markerlist[i].coordinate;
locations.markericon=locations.markerlist[i].icon;
markerRender(map, locations);
}}
}
if(locations.markercoordinate!=undefined){
markerRender(map, locations);
}
function markerRender(map, locations){
"use strict";
var location=locations.markercoordinate
.split(',');
if(location.length==2){
var myLatLng=new google.maps.LatLng(location[0], location[1]);
var mk={
position:myLatLng,
map:map,
}
if(locations.markericon!=false){
mk.icon=locations.markericon;
}
var marker=new google.maps.Marker(mk);
marker.setMap(map);
if(locations.markerdesc!=undefined){
var infowindow=new google.maps.InfoWindow({
content:locations.markerdesc,
maxWidth:controls.infowidth,
});
if(controls.infoclick){
google.maps.event.addListener(marker,
'click', function(){
infowindow
.open(map, marker);
});
}else{
infowindow.open(map, marker);
}}
}}
});
});