Setup
Requires<script src="//ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.js"></script> <script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=true&key="></script> <script type="text/javascript" src="MarkerClusterer.js"></script> <script type="text/javascript" src="infobox.js"></script> <script type="text/javascript" src="jquery.mosne.map.js"></script>
Real life examples
- that's Contemporary
- Fotoautomat France
- Wallace's arthouse scotland
- We-We graphic design
- Many others coming sooon...
- twitme yours @mosne
Demos
- Map1: Simple use lat lng coordinates for each link
- Map2: Advanced how-to style google maps
- Map3: Geocoding use plaint text address for each link
- Map4: Events shows how to bind an trigger different events
- Map5: Categories customs marker icons based on category
- Map6: InfoBox customs infobox styles (infobox.js required)
Map1: simple
$all=8;
for ($a=0; $a<$all; $a++){ ?>
"
data-lng=" echo rand(8,16).".".rand(0,9999999); ?>">
} ?>
Link echo $a; ?>
foo echo $a; ?>
Hello world!
<div id="map_1" class="mapbox"></div>
<div id="map_1_list" class="list">
<div class="maplocation" data-name="Link 1" data-lat="41.1051872" data-lng="13.2934012">
<h2><a href="#" class="maplink">Link 1</a></h2>
<div class="infobox">
<h2>Link 1</h2>
<p>Hello world!</p>
</div>
</div>
...
</div>
$("#map_1").mosne_map({elements:'#map_1_list .maplocation'});
Map2: advanced
$all=8;
for ($a=0; $a<$all; $a++){ ?>
"
data-lng=" echo rand(8,16).".".rand(0,9999999); ?>">
} ?>
Link echo $a; ?>
foo echo $a; ?>
Hello world!
var mycolor = "#ff0066";
var mycolor2 = "#966E7E";
var mybg_color = "#000000";
var cluster_styles = [{
url: 'images/m3.png',
height: 30,
width: 30,
opt_textSize: 14,
anchor: [3, 0],
textColor: '#222222'
}, {
url: 'images/m4.png',
height: 40,
width: 40,
opt_textSize: 17,
opt_anchor: [6, 0],
opt_textColor: '#222222'
}, {
url: 'images/m5.png',
width: 50,
height: 50,
opt_textSize: 21,
opt_anchor: [8, 0],
opt_textColor: '#222222',
}, {
url: 'images/m5.png',
width: 50,
height: 50,
opt_textSize: 21,
opt_anchor: [8, 0],
opt_textColor: '#222222',
}];
var marker_icon = 'http://chart.apis.google.com/chart?chst=d_map_pin_letter&chld=|f6005d|f6005d';
// Styledmaps wizard
// http://gmaps-samples-v3.googlecode.com/svn/trunk/styledmaps/wizard/
var stylez = [{
featureType: "water",
elementType: "all",
stylers: [{
invert_lightness: true
}, {
lightness: -100
}]
}, {
featureType: "road",
elementType: "all",
stylers: [{
visibility: "on"
}, {
saturation: -99
}, {
gamma: 0.34
}]
}, {
featureType: "landscape",
elementType: "all",
stylers: [{
visibility: "on"
}, {
gamma: 0.16
}, {
saturation: -93
}, {
lightness: -75
}]
}, {
featureType: "poi",
elementType: "all",
stylers: [{
visibility: "off"
}]
}, {
featureType: "administrative",
elementType: "all",
stylers: [{
invert_lightness: true
}]
}, {
featureType: "road.arterial",
elementType: "labels",
stylers: [{
visibility: "off"
}]
}, {
featureType: "road.highway",
elementType: "labels",
stylers: [{
visibility: "off"
}]
}, {
featureType: "transit",
elementType: "all",
stylers: [{
visibility: "off"
}]
}, {
featureType: "road",
elementType: "all",
stylers: [{
hue: mycolor
}, {
saturation: 16
}, {
lightness: -49
}]
}, {
featureType: "administrative",
elementType: "all",
stylers: [{
saturation: 25
}, {
lightness: -40
}, {
hue: mycolor2
}]
}];
var mapstyle_id = 'minimal';
var mapOptions = {
mapTypeControlOptions: {
mapTypeIds: [google.maps.MapTypeId.ROADMAP, mapstyle_id]
},
panControl: false,
zoomControl: true,
zoomControlOptions: {
style: google.maps.ZoomControlStyle.SMALL,
position: google.maps.ControlPosition.TOP_LEFT
},
mapTypeControl: false,
scaleControl: false,
streetViewControl: false,
zoom: 6,
disableDoubleClickZoom: true,
backgroundColor: mybg_color
};
$("#map_2").mosne_map({
elements: '#map_2_list .maplocation',
showzoom: true,
timeout: 100,
clat: 41.895466,
clng: 12.482324,
clickedzoom: 14,
mapstyle: stylez,
mapstyle_name: mapstyle_id,
map_opt: mapOptions,
cluster_styles: {
zoomOnClick: true,
maxZoom: 13,
gridSize: 30,
styles: cluster_styles
},
marker_icon: marker_icon
});
Map3: geocoding
$all=8;
$strade =array("casilina",
"prenestina",
"tuscolana",
"boccea",
"pontina",
"salaria",
"tiburtina",
"aurelia");
for ($a=0; $a<$all; $a++){ ?>
} ?>
Link echo $a; ?>
foo echo $a; ?>
via echo $strade[rand(0,7)]; ?> echo (($a*20)+1); ?>, 00100 roma, italia
Hello world!
<div id="map_3" class="mapbox"></div>
<div class="maplocation">
<h2><a href="#" class="maplink">Link 1</a></h2>
<div class="infobox">
<h2 class="name">Link 1</h2>
<p class="address">via casilina 11, 00100 roma, italia</p>
<p>Hello world!</p>
</div>
</div>
$("#map_3").mosne_map({mode:'address',elements:'#map_3_list .maplocation'});
Map4: Events
$all=8;
for ($a=0; $a<$all; $a++){ ?>
"
data-lng=" echo rand(8,16).".".rand(0,9999999); ?>">
} ?>
Link echo $a; ?>
foo echo $a; ?>
Hello world!
$("#map_4").bind("showzoom", function (e, zoom) {
$("#zoom").html(zoom);
});
$("#map_4_list .maplocation").bind('aj_open', function (e) {
$(this).append('<div class="pd">do something fun!</div>');
return false;
});
$("#reset").click(function (e) {
e.preventDefault();
$("#map_4").trigger("bounds");
});
$("#up").click(function (e) {
e.preventDefault();
$("#map_4_list .maplocation:odd").remove();
$("#map_4").trigger("update");
});
var counter = function () {
tot_p = $("#map_4 .maplocation").length;
$("#tot").html(tot_p);
}
$("#map_4").mosne_map({
elements: '#map_4_list .maplocation',
showzoom: true,
trigger: 'aj_open',
clickedzoom: 14,
infowindows: false, //do not use infoWindow
afterUpdate: counter
});
Map5: Categories
$all=8;
$cats = array('red','green','blue','aqua');
for ($a=0; $a<$all; $a++){
$cc = $cats[rand(0,3)];
?>
"
data-cat=" echo $cc ?>"
data-lng=" echo rand(8,16).".".rand(0,9999999); ?>">
} ?>
Link echo $a; ?>
foo echo $a; ?>
echo $cc ?>
<div class="maplocation" data-name="Link 1" data-lat="41.10" data-lng="13.29" data-cat="red">
var my_cat_style ={
red: { icon: 'http://chart.apis.google.com/chart?chst=d_map_pin_letter&chld=R|cc0000|FFFFFF'},
green: { icon: 'http://chart.apis.google.com/chart?chst=d_map_pin_letter&chld=G|00cc00|333333'},
blue: { icon: 'http://chart.apis.google.com/chart?chst=d_map_pin_letter&chld=B|2222cc|FFFFFF'},
aqua: { icon: 'http://chart.apis.google.com/chart?chst=d_map_pin_letter&chld=A|00cccc|333333'}
};
$("#map_5").mosne_map({
elements: '#map_5_list .maplocation',
cluster_styles: {
zoomOnClick: true,
maxZoom: 3,
styles: cluster_styles
},
cat_style: my_cat_style
});
Map6: custom infoWindows
$all=8;
//$cats = array('today','yesterday','comingsoon');
for ($a=0; $a<$all; $a++){
$cc = 'yesterday'; //$cats[rand(0,2)];
?>
"
data-lng=" echo rand(8,16).".".rand(0,9999999); ?>">
} ?>
Link echo $a; ?>
this is so echo $cc ?>!
<div class="infobox">
<div class="m_tooltip">
<p>this is so yesterday!</p>
</div>
</div>
.m_tooltip{
position: absolute;
text-align: center;
left: 0;
top: 0;
z-index: -2;
color: #FFFFFF;
float: left;
margin-top: 10px;
padding: 10px;
width: 260px;
border: 1px solid #313436;
text-shadow: 0px 0px 3px #000;
-moz-border-radius: 5px;
-webkit-border-radius: 5px;
border-radius: 5px;
-moz-box-shadow: 0px 1px 2px #000;
-webkit-box-shadow: 0px 1px 2px #000;
box-shadow: 0px 1px 2px #000;
background-color: #313436;
background-image: -webkit-linear-gradient(top, #313436, #222526);
background-image: -moz-linear-gradient(top, #313436, #222526);
background-image: -ms-linear-gradient(top, #313436, #222526);
background-image: -o-linear-gradient(top, #313436, #222526);
background-image: linear-gradient(top, #313436, #222526);
filter: progid:DXImageTransform.Microsoft.gradient(startColorStr='#313436', EndColorStr='#222526');
}
$("#map_6").mosne_map({
elements: '#map_6_list .maplocation',
infowindows: false, // do not use infoWindow
infobox: true, // use infobox instead
cluster_styles: {
zoomOnClick: true,
maxZoom: 3,
styles: cluster_styles
},
marker_icon:'images/m_red.png'
});
Options
defaults = {
elements: '#list .maplocation', //links selector
map_opt: baseconf, // custom map options object
clat: 41.895466, // set the lat default map center
clng: 12.482324, // set the lng default map center
mapstyle_name: '', // custom map style label and id
mapstyle: '', // mapstyle object
cluster_styles: {}, // custom cluster icons object
marker_icon: '', // custom marker icon url
infowindows: true, // shows infoWindows grabing html from the .infobox element
infobox: false, // enable custom infoWindows using infobox class
infobox_s: s_infobox, // default color scheme for custom infobox container
trigger: 'map_open', // you can set a event trigger for each link/marker
clickedzoom: 15, // set the zoom level when you click the single marker
timeout: 100, // delay between click and zoom on the single marker
mode: 'latlng', // switch mode
wait: 500, // timeout between geocode requests
cat_style: {}, // costum icons and click zoom level
fitbounds: true, // on|off fit bounds
showzoom: false, // bind current map zoom level event
before: function () {}, // before create map callback
after: function () {}, // after create map callback
afterUpdate: function () {} // after update map callback
};
Download
this project is under GNU General Public License
- this site on github
- jquery.mosne.map.js
- jquery.mosne.map.min.js (UglifyJS minification)