A custom google map to show company location on your website. It can be easily customised to perfectly fit your website style!
Article and download on Cody: http://codyhouse.co/gem/custom-google-map/
A custom google map to show company location on your website. It can be easily customised to perfectly fit your website style!
Article and download on Cody: http://codyhouse.co/gem/custom-google-map/
| <body> | |
| <header> | |
| <h1>Custom Google Map</h1> | |
| </header> | |
| <section id="cd-google-map"> | |
| <div id="google-container"></div> | |
| <div id="cd-zoom-in"></div> | |
| <div id="cd-zoom-out"></div> | |
| <address>86-90 Paul Street, London, EC2A 4NE</address> | |
| </section> | |
| <script src="https://maps.googleapis.com/maps/api/js"></script> | |
| </body> |
| jQuery(document).ready(function($){ | |
| //set your google maps parameters | |
| var $latitude = 51.5255069, | |
| $longitude = -0.0836207, | |
| $map_zoom = 14; | |
| //google map custom marker icon - .png fallback for IE11 | |
| var is_internetExplorer11= navigator.userAgent.toLowerCase().indexOf('trident') > -1; | |
| var $marker_url = ( is_internetExplorer11 ) ? 'https://s3-us-west-2.amazonaws.com/s.cdpn.io/148866/cd-icon-location.png' : 'https://s3-us-west-2.amazonaws.com/s.cdpn.io/148866/cd-icon-location_1.svg'; | |
| //define the basic color of your map, plus a value for saturation and brightness | |
| var $main_color = '#2d313f', | |
| $saturation= -20, | |
| $brightness= 5; | |
| //we define here the style of the map | |
| var style= [ | |
| { | |
| //set saturation for the labels on the map | |
| elementType: "labels", | |
| stylers: [ | |
| {saturation: $saturation} | |
| ] | |
| }, | |
| { //poi stands for point of interest - don't show these lables on the map | |
| featureType: "poi", | |
| elementType: "labels", | |
| stylers: [ | |
| {visibility: "off"} | |
| ] | |
| }, | |
| { | |
| //don't show highways lables on the map | |
| featureType: 'road.highway', | |
| elementType: 'labels', | |
| stylers: [ | |
| {visibility: "off"} | |
| ] | |
| }, | |
| { | |
| //don't show local road lables on the map | |
| featureType: "road.local", | |
| elementType: "labels.icon", | |
| stylers: [ | |
| {visibility: "off"} | |
| ] | |
| }, | |
| { | |
| //don't show arterial road lables on the map | |
| featureType: "road.arterial", | |
| elementType: "labels.icon", | |
| stylers: [ | |
| {visibility: "off"} | |
| ] | |
| }, | |
| { | |
| //don't show road lables on the map | |
| featureType: "road", | |
| elementType: "geometry.stroke", | |
| stylers: [ | |
| {visibility: "off"} | |
| ] | |
| }, | |
| //style different elements on the map | |
| { | |
| featureType: "transit", | |
| elementType: "geometry.fill", | |
| stylers: [ | |
| { hue: $main_color }, | |
| { visibility: "on" }, | |
| { lightness: $brightness }, | |
| { saturation: $saturation } | |
| ] | |
| }, | |
| { | |
| featureType: "poi", | |
| elementType: "geometry.fill", | |
| stylers: [ | |
| { hue: $main_color }, | |
| { visibility: "on" }, | |
| { lightness: $brightness }, | |
| { saturation: $saturation } | |
| ] | |
| }, | |
| { | |
| featureType: "poi.government", | |
| elementType: "geometry.fill", | |
| stylers: [ | |
| { hue: $main_color }, | |
| { visibility: "on" }, | |
| { lightness: $brightness }, | |
| { saturation: $saturation } | |
| ] | |
| }, | |
| { | |
| featureType: "poi.sport_complex", | |
| elementType: "geometry.fill", | |
| stylers: [ | |
| { hue: $main_color }, | |
| { visibility: "on" }, | |
| { lightness: $brightness }, | |
| { saturation: $saturation } | |
| ] | |
| }, | |
| { | |
| featureType: "poi.attraction", | |
| elementType: "geometry.fill", | |
| stylers: [ | |
| { hue: $main_color }, | |
| { visibility: "on" }, | |
| { lightness: $brightness }, | |
| { saturation: $saturation } | |
| ] | |
| }, | |
| { | |
| featureType: "poi.business", | |
| elementType: "geometry.fill", | |
| stylers: [ | |
| { hue: $main_color }, | |
| { visibility: "on" }, | |
| { lightness: $brightness }, | |
| { saturation: $saturation } | |
| ] | |
| }, | |
| { | |
| featureType: "transit", | |
| elementType: "geometry.fill", | |
| stylers: [ | |
| { hue: $main_color }, | |
| { visibility: "on" }, | |
| { lightness: $brightness }, | |
| { saturation: $saturation } | |
| ] | |
| }, | |
| { | |
| featureType: "transit.station", | |
| elementType: "geometry.fill", | |
| stylers: [ | |
| { hue: $main_color }, | |
| { visibility: "on" }, | |
| { lightness: $brightness }, | |
| { saturation: $saturation } | |
| ] | |
| }, | |
| { | |
| featureType: "landscape", | |
| stylers: [ | |
| { hue: $main_color }, | |
| { visibility: "on" }, | |
| { lightness: $brightness }, | |
| { saturation: $saturation } | |
| ] | |
| }, | |
| { | |
| featureType: "road", | |
| elementType: "geometry.fill", | |
| stylers: [ | |
| { hue: $main_color }, | |
| { visibility: "on" }, | |
| { lightness: $brightness }, | |
| { saturation: $saturation } | |
| ] | |
| }, | |
| { | |
| featureType: "road.highway", | |
| elementType: "geometry.fill", | |
| stylers: [ | |
| { hue: $main_color }, | |
| { visibility: "on" }, | |
| { lightness: $brightness }, | |
| { saturation: $saturation } | |
| ] | |
| }, | |
| { | |
| featureType: "water", | |
| elementType: "geometry", | |
| stylers: [ | |
| { hue: $main_color }, | |
| { visibility: "on" }, | |
| { lightness: $brightness }, | |
| { saturation: $saturation } | |
| ] | |
| } | |
| ]; | |
| //set google map options | |
| var map_options = { | |
| center: new google.maps.LatLng($latitude, $longitude), | |
| zoom: $map_zoom, | |
| panControl: false, | |
| zoomControl: false, | |
| mapTypeControl: false, | |
| streetViewControl: false, | |
| mapTypeId: google.maps.MapTypeId.ROADMAP, | |
| scrollwheel: false, | |
| styles: style, | |
| } | |
| //inizialize the map | |
| var map = new google.maps.Map(document.getElementById('google-container'), map_options); | |
| //add a custom marker to the map | |
| var marker = new google.maps.Marker({ | |
| position: new google.maps.LatLng($latitude, $longitude), | |
| map: map, | |
| visible: true, | |
| icon: $marker_url, | |
| }); | |
| //add custom buttons for the zoom-in/zoom-out on the map | |
| function CustomZoomControl(controlDiv, map) { | |
| //grap the zoom elements from the DOM and insert them in the map | |
| var controlUIzoomIn= document.getElementById('cd-zoom-in'), | |
| controlUIzoomOut= document.getElementById('cd-zoom-out'); | |
| controlDiv.appendChild(controlUIzoomIn); | |
| controlDiv.appendChild(controlUIzoomOut); | |
| // Setup the click event listeners and zoom-in or out according to the clicked element | |
| google.maps.event.addDomListener(controlUIzoomIn, 'click', function() { | |
| map.setZoom(map.getZoom()+1) | |
| }); | |
| google.maps.event.addDomListener(controlUIzoomOut, 'click', function() { | |
| map.setZoom(map.getZoom()-1) | |
| }); | |
| } | |
| var zoomControlDiv = document.createElement('div'); | |
| var zoomControl = new CustomZoomControl(zoomControlDiv, map); | |
| //insert the zoom div on the top left of the map | |
| map.controls[google.maps.ControlPosition.LEFT_TOP].push(zoomControlDiv); | |
| }); | |
| <script src="//cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script> |
| @import "bourbon"; | |
| // variables - colors | |
| $main-text: #2d313f; // main text | |
| $link: #d36868; // anchor tags | |
| $background: #e7eaf0; // body background color | |
| $color-1: #2d313f; // blue | |
| $color-2: #d36868; // red | |
| $color-3: #ffffff; // white | |
| // variables - fonts | |
| $primary-font: 'Lora', serif; | |
| // rem fallback - credits: http://zerosixthree.se/ | |
| @function calculateRem($size) { | |
| $remSize: $size / 16px; | |
| @return $remSize * 1rem; | |
| } | |
| @mixin font-size($size) { | |
| font-size: $size; | |
| font-size: calculateRem($size); | |
| } | |
| // layout - breakpoints | |
| $S: 320px; | |
| $M: 768px; | |
| $L: 1170px; | |
| // layout - media queries | |
| @mixin MQ($canvas) { | |
| @if $canvas == S { | |
| @media only screen and (min-width: $S) { @content; } | |
| } | |
| @else if $canvas == M { | |
| @media only screen and (min-width: $M) { @content; } | |
| } | |
| @else if $canvas == L { | |
| @media only screen and (min-width: $L) { @content; } | |
| } | |
| } | |
| /* -------------------------------- | |
| Primary style | |
| -------------------------------- */ | |
| html * { | |
| -webkit-font-smoothing: antialiased; | |
| -moz-osx-font-smoothing: grayscale; | |
| } | |
| *, *:after, *:before { | |
| @include box-sizing(border-box); | |
| } | |
| body { | |
| font: { | |
| size: 100%; | |
| family: $primary-font; // variables inside partials > _variables.scss | |
| } | |
| color: $main-text; | |
| background-color: $background; | |
| } | |
| /* -------------------------------- | |
| Main components | |
| -------------------------------- */ | |
| header { | |
| height: 200px; | |
| line-height: 200px; | |
| text-align: center; | |
| background: $color-1; | |
| h1 { | |
| color: $color-3; | |
| @include font-size(20px); | |
| } | |
| @include MQ(M) { | |
| height: 300px; | |
| line-height: 300px; | |
| } | |
| } | |
| #google-container { | |
| position: relative; | |
| width: 100%; | |
| height: 200px; | |
| background-color: $background; | |
| @include MQ(M) { | |
| height: 300px; | |
| } | |
| @include MQ(L) { | |
| height: 600px; | |
| } | |
| } | |
| #cd-google-map { | |
| position: relative; | |
| address { | |
| position: absolute; | |
| width: 100%; | |
| bottom: 0; | |
| left: 0; | |
| padding: 1em 1em; | |
| background-color: rgba($color-2, .9); | |
| color: $color-3; | |
| @include font-size(13px); | |
| @include MQ(M) { | |
| @include font-size(15px); | |
| text-align: center; | |
| } | |
| } | |
| } | |
| #cd-zoom-in, #cd-zoom-out { | |
| height: 32px; | |
| width: 32px; | |
| cursor: pointer; | |
| margin-left: 10px; | |
| background-color: rgba($color-2, .9); | |
| background-repeat: no-repeat; | |
| background-size: 32px 64px; | |
| background-image: url('https://s3-us-west-2.amazonaws.com/s.cdpn.io/148866/cd-icon-controller.svg'); | |
| .no-touch &:hover { | |
| background-color: rgba($color-2, 1); | |
| } | |
| @include MQ(M) { | |
| margin-left: 50px; | |
| } | |
| } | |
| #cd-zoom-in { | |
| background-position: 50% 0; | |
| margin-top: 10px; | |
| margin-bottom: 1px; | |
| @include MQ(M) { | |
| margin-top: 50px; | |
| } | |
| } | |
| #cd-zoom-out { | |
| background-position: 50% -32px; | |
| } |