Hello everybody! In his previous post JoeVains shared with you a pack of location icons. Initially they were designed for the PeHaa THEMES recent premium WordPress theme (YaGa) where they are used as custom Google Maps markers. We decided to extend the Yaga Theme pack and share it with you (free for both personal and commercial use). This post is for those who do not have much experience with customizing Google maps with Google Maps Javascript API. I’ll show you how to generate a map and add markers using our location icons (or your own location icons if you prefer). We’ll discuss improving user experience and browsers inconsistencies. Don’t hesitate to download the .zip folder to have a complete version of the code. Generating a map Our main reference is developers.google.com/maps/documentation/javascript/tutorial If you are just experimenting you do not necessarily need to generate an  API key. If you put your map online you may need to control if the requests quota is not exceeded and be able to increase it. With an API key you can also set which web domains are allowed to access your maps - this will protect you from any unauthorized usage. To get it visit this link. We will start with a slightly modified example code that you can find in the Google Maps Api tutorial. We will center our map in Place de Vosges, Paris, France - our coordinates are {lat: 48.855510, lng: 2.365505}. <html> <head> <style> html, body {height:100%; margin:0; padding:0;} .map {height:100%} </style> </head> <body> <div id="map" class="map desk-three-forth"></div> <script type="text/javascript"> var map; function initMap() { var myLatLng = {lat: 48.855510, lng: 2.365505}; map = new google.maps.Map(document.getElementById('map'), { zoom: 18, center: myLatLng, styles: [{"stylers": [{ "saturation": -100 }]}] }); } </script> <script src="https://maps.googleapis.com/maps/api/js?callback=initMap"></script> </body> </html> We zoom in 18 times and we also modify the map styles. Our style modification is one of the simplest possible - basic desaturation. If you want to play with map styles you should visit snazzymaps.com - a community built around creating great looking styles for Google Maps. Using the styles from snazzymaps in your website is as easy as copying a bit of code (JSON) and passing it to the map options of your map, ie. replace the [{"stylers": [{ "saturation": -100 }]}]. Please note that you have to determine the map dimensions, here we set height:100% together with the body and html heights set to 100%. Otherwise the map will not display. Adding Markers We will add two markers, they coordinates are: {lat: 48.856259, lng: 2.365043} and {lat: 48.85484, lng: 2.366427}. We will use two different svg icons from the JoeVains pack. We choose svg because of their vector format assuring flexibility in sizes and a crisp look on retina screens. Using .pngs icons would always work, we will discuss it later. Let’s add the location of PEPSized Coffee to the map (unfortunately, it does not exists in the real life…). We will use the the Coffee_3.svg and display it 64px wide and 64px height. var marker = new google.maps.Marker({ position: {lat: 48.856259, lng: 2.365043}, map: map, title: 'PEPSized Coffee', icon: { url: "images/markers/svg/Coffee_3.svg", scaledSize: new google.maps.Size(64, 64) } }); Now you can replicate this code to add more markers, varying icons, titles and sizes. We’ll organise the code a little bit: var locations = [ { title: 'PEPSized Coffee', position: {lat: 48.856259, lng: 2.365043}, icon: { url: "images/markers/svg/Coffee_3.svg", scaledSize: new google.maps.Size(64, 64) } }, { title: 'PEPSized Office', position: {lat: 48.85484, lng: 2.366427}, icon: { url: "images/markers/svg/Arrow_1.svg", scaledSize: new google.maps.Size(96, 96) } } ]; and add the markers with the forEach loop: locations.forEach( function( element ) { var marker = new google.maps.Marker({ position: element.position, map: map, title: element.title, icon: element.icon, }); }); } Using SVG sprites The icon object has a few more attributes that we haven’t used so far. They are particularly useful if we use a svg sprite. In our example we use two icons, we could use a sprite as in the image below: The attributes we will need to properly scale and position each icon are: size, scaledSize and origin. The size attribute corresponds to the size of the marker that will be displayed on the map, scaledSize the size of the image we use and origin - from which point the image should be displayed, (0,0) being the top left corner. var locations = [ { title: 'PEPSized Coffee', position: {lat: 48.856259, lng: 2.365043}, icon: { url: "images/markers/svg/Arrows.svg", size: new google.maps.Size(64, 64), scaledSize: new google.maps.Size(128, 64) } }, { title: 'PEPSized Office', position: {lat: 48.85484, lng: 2.366427}, icon: { url: "images/markers/svg/Arrows.svg", origin: new google.maps.Point(96, 0), size: new google.maps.Size(96, 96), scaledSize: new google.maps.Size(192, 96) } } ]; An icon object has also an anchor attribute that we are not using in our example but that can be very important. The anchor attribute defines where the icon’s hotspot should be located (based on the scaledSize and origin value). You can see what happens when playing with anchor values in the image below. The red default Google Maps marker indicates the referenced coordinates. The default value of anchor (top left image) is the point in the middle of the icon’s bottom. For our 96px 96px icon it is: anchor: new google.maps.Point(48,96) The (0,0) anchor would mean that the referenced coordinates are indicated by the top left corner of the icon etc. Improving User Experience It may be very annoying when you want to quickly scroll down a page and instead you keep interacting with a map. That’s why we decided to disable the scrolling and dragging behaviour on small screens where the map takes full width. We will also set the initial map zoom parameter depending on the screen width. We will use a small custom modernizr build. We will use the Modernizr.mq option - that allows to check if the current browser window state matches a media query. We will also detect the hidden scrollbars - overlay scrollbars (when scrollbars on overflowed blocks are visible), common on mobile and OS X. We include it within the page HEAD element: <head> <title>PEPSized Places in Paris</title> <meta name="viewport" content="initial-scale=1.0"> <meta charset="utf-8"> <link rel="stylesheet" href="style.css" type="text/css" media="all"> <script src="modernizr.js"></script> </head> And we modify the piece of code where the map is generated var map, desktopScreen = Modernizr.mq( "only screen and (min-width:1024px)" ), zoom = desktopScreen ? 18 : 17, scrollable = draggable = !Modernizr.hiddenscroll || desktopScreen; function initMap() { var myLatLng = {lat: 48.855510, lng: 2.365505}; map = new google.maps.Map(document.getElementById('map'), { zoom: zoom, center: myLatLng, mapTypeId: google.maps.MapTypeId.ROADMAP, scrollwheel: scrollable, draggable: draggable, styles: [{"stylers": [{ "saturation": -100 }]}], }); ... Using .png icons You could use the .png icons instead the .svg - the difference would appear on retina screens. If you have your custom .png icon (for example my_icon_48.png) that you want to use as a marker, make sure to have it double sized (for example my_icon_96.png): icon: { url: window.devicePixelRatio > 1 ? "my_icon96png" : "my_icon48.png", scaledSize: new google.maps.Size(48, 48) } Troubleshooting The main problem with the svg approach is that it does not work in IE11 (it does in IE10 and Edge although). Here is our workaround - we detect the IE11 browser with javascript and use a png icon instead of a svg. var isIE11 = !!(navigator.userAgent.match(/Trident/) && navigator.userAgent.match(/rv[ :]11/)); var locations = [ { title: 'PEPSized Coffee', position: {lat: 48.856259, lng: 2.365043}, icon: { url: isIE11 ? "images/markers/png/Coffee_3.png" : "images/markers/svg/Coffee_3.svg", scaledSize: new google.maps.Size(64, 64) } }, { title: 'PEPSized Office', position: {lat: 48.85484, lng: 2.366427}, icon: { url: isIE11 ? "images/markers/png/Arrow_1.png" : "images/markers/svg/Arrow_1.svg", scaledSize: new google.maps.Size(96, 96) } } ]; The Demo Layout For those who might be interested, a few words about our demo layout. This is our markup: <div id="map" class="map desk-three-forth"></div> <div class="map-legend desk-one-forth"> <div class="location location-1"> <div class="location--inner"> <img src="images/markers/svg/Coffee_3.svg" alt="Coffee Shop icon"> <!-- or or instead of <img> if we use a sprite <span class="marker-icon marker-coffee"></span> --> <h3>PEPSized Coffee</h3> <p>13 Place de PEPS</p> <h4>Opening Hours:</h4> <p>Opened daily:</p> <p>9am - 8pm</p> </div> </div> <div class="location location-2"> <div class="location--inner"> <img src="images/markers/svg/Arrow_1.svg" alt="PEPSized Office icon"> <!-- or instead of <img> if we use a sprite <span class="marker-icon marker-office"></span> --> <h3>PEPSized Office</h3> <p>1 Place de PEPS</p> <h4>Opening Hours:</h4> <p>Tuesday - Saturday</p> <p>9am - 8pm</p> </div> </div> </div> We use background images for the location divs and an :after pseudo-element to add a semi-transparent overlay: .location { background-size:cover; background-position:center center; position:relative; color:white; } .location-1 { background-color:#554738; background-image:url( 'images/coffee_bg.jpg'); } .location-2 { background-color:#383838; background-image:url( 'images/office_bg.jpg'); } .location::after { content:""; background-color:inherit; opacity:.65; position:absolute; left:0; right:0; top:0; bottom:0; } .location--inner { position:relative; z-index:1; } We set the width of the map to 75% and float it left. We also use the flexbox property to vertically center the .location-inner divs: @media screen and (min-width: 1024px) { .map, .map-legend { height:100%; } .desk-three-forth { float: left; width:75%; } .desk-one-forth { width:25%; } .map-legend, .location { display:flex; flex-direction:column; } .location { min-height:50%; justify-content:center; align-items:center } } Displaying the icons within the location-inner divs seemed absolutely straightforward but… we discovered some strange behavior in Safari. If we modify the dimensions of the svg icon (the same .svg file as being used in a marker), the new dimensions interfere with the icon object size attributes. It happens both for and img element or if background-image is used. The workaround it to use transform:scale instead of modifying the dimensions directly, that’s why we have: .location img { display:inline-block; -webkit-transform:scale(2); transform:scale(2); } or if using sprites: .marker-icon { background-image:url("images/markers/svg/Arrows.svg"); display:inline-block; width:48px; height:48px; -webkit-transform:scale(2); transform:scale(2); } .marker-office { background-position:48px 0; } That’s all. We hope you got inspired! Thank you very much! Tweet this! Terms of use : You may use the effects demonstrated in tutorials in your own work, both commercial or non-commercial without any attribution. You may not reproduce entire nor large parts of our tutorials. The outcome of our tutorials may not be re-saled nor redistributed.
Pepsized   .   Blog   .   <span class='date ' tip=''><i class='icon-time'></i>&nbsp;Jan 19, 2016 09:02pm</span>
Developing an eLearning storyboard is one thing, but turning it into a practical guide for anyone involved in the eLearning project is of utmost importance. In this article, I will give you 7 tips & tricks you can use to design outstanding eLearning storyboards.
Shift Disruptive Learning   .   Blog   .   <span class='date ' tip=''><i class='icon-time'></i>&nbsp;Jan 19, 2016 08:02pm</span>
We discuss the trends and issues we observed during the weeks of January 2-17, 2016 as we flipped resources into our Flipboard magazine (http://bit.ly/trendsandissues). We have four trends that we discuss. The first is news from the recent Consumer Electronic Show. The second (and reoccurring) is virtual reality. The big news is Octlus Rift will […] Tags:   Del.icio.us Facebook TweetThis Digg StumbleUpon Comments:  0 (Zero), Be the first to leave a reply!Copyright © Trends & Issues [Episode 55 Trends for January 2-17 Consumer Electronics Show, VR, Gaming & Instruction, and ID Strategies and Cognition Research], All Right Reserved. 2016.
Trends and Issues team   .   Blog   .   <span class='date ' tip=''><i class='icon-time'></i>&nbsp;Jan 19, 2016 08:02pm</span>
In part 1 of the Downright Sneaky Lectora® Tricks tutorial, you will learn how to create devMode, a special mode you can use that makes it easier on a developer when testing his or her course. In subsequent tutorials, you will learn how to give yourself superpowers in devMode and then hide the entrance. The secret passageway If you’re like me (and I know I sure am!), then you probably watched a fair amount of Scooby Doo as a kid. Most episodes featured a spooky building that was "haunted" by some sort of monster like a swamp ghost, rock-n-roll demon, or whatever. Upon investigating, the Scooby Doo gang would often find a secret passageway that the sinister villain exploited in order to sneak around stealthily and appear to have supernatural powers. I was quite disappointed to discover that my own home didn’t have any secret passageways. But now I can build my OWN secret passageways and so can YOU using Lectora! We will use our secret passageway to access devMode. What is devMode? DevMode (which is shorthand for Developer Mode) enables you (the developer) to bestow the ability to bypass obstacles so that you can zip through your online courses quickly and SNEAKILY —like a ghost! This is especially useful when you are testing your course. Here are a few examples of special abilities you can give yourself in devMode. Display the Next button immediately on page show (instead of waiting for the end of narration). Reveal a hidden menu that links to every page in the course. Identify the correct answer to a quiz question. Automatically enter a correct response. You can do whatever you want in devMode to make it easy to test your course… just make sure you keep those "meddling kids" from finding your secret passageway. Defining the devMode variable Do variables give you the CREEPS? Variables might seem scary at first. ("Zoinks! It’s the DISC DEMON!") But once you master them, you realize they’re nothing to be afraid of ("Why, it’s just Ace Decade, the studio owner’s nephew.") Don’t let them intimidate you. One way to apply a variable is to use it like a light switch: you can turn a setting OFF or ON. In our case, we want to be able to turn devMode OFF and ON, so we’ll make it a variable. When you create a variable, you have to decide what values will represent OFF and ON. I like to use 0 and 1 to represent OFF and ON states. If devMode = 0, then devMode is OFF If devMode = 1, then devMode is ON You can define variables in lots of ways: for example, you could use the words OFF and ON to represent those states. Using 0 and 1 is just a convention I follow. How to create the devMode variable 1. On the Tools ribbon, click Variables to display the Variable Manager dialog box. 2. Add a new variable and name it devMode and enter the following settings: In the Initial Value field, enter 0. That means devMode is turned OFF (0) by default. Ensure that Random Initial Value is not selected. If we set this value to random, occasionally it might be 1. We don’t want that. Select the Retain variable between sessions checkbox. This option means if I turn devMode ON (1) and exit the course, when I reopen the course, devMode will still be ON because it "remembers" how I left it. It is optional to select this (but I like to). 3. Click OK and click Close to close the Variable Manager window. OK, you’ve defined devMode as a variable. Good work! Next, we’ve got to think about how we are going to turn it on. Come back to the blog this Thursday for the next tutorial, where we’ll create a button that will turn devMode ON and OFF. Download the Lectora and Lectora Online files for this course in the Trivantis® Community. John Mortenson is the Online Learning Manager for The Fresh Market. He has been developing online courses for over 10 years and is a member of the Lectora Advisory Board. He is also an Adobe Creative Suite Guru and cartoonist. You can contact him on LinkedIn and Twitter. The post Downright Sneaky Lectora Tricks Part 1: How to Build a Backdoor in Your Course appeared first on .
Trivantis   .   Blog   .   <span class='date ' tip=''><i class='icon-time'></i>&nbsp;Jan 19, 2016 07:02pm</span>
The Learning Technologies 2016 Conference and Expo takes place from February 3rd - 4th, at the Olympia, London. Learning Technologies is Europe’s leading showcase of organisational learning and the technology used to support learning at work. Learning Technologies 2016 will cater for more than 7,500 visitors, 150 free L&D seminars, 250 exhibitors, two exhibition halls packed with the […] The post PulseLearning to attend Learning Technologies 2016 appeared first on PulseLearning.
PulseLearning   .   Blog   .   <span class='date ' tip=''><i class='icon-time'></i>&nbsp;Jan 19, 2016 07:02pm</span>
Each day I try hard to recognize my biases, and make sure that I am not ‘oppressing’ others because of my biases. I don’t know if I ever will fully be conscious of all of my biases however, my thoughts and behaviours certainly feel ‘authentic’ to me. But I know that there are other ways […]
Deborah McCallum   .   Blog   .   <span class='date ' tip=''><i class='icon-time'></i>&nbsp;Jan 19, 2016 06:02pm</span>
______ Join us for NCCE 2016, the 45th Annual Conference and Exposition held in Seattle, Washington, at the Washington State Convention Center, February 24-26, 2016. Through the annual conference, NCCE delivers innovative and cutting-edge programming to Northwest educational leaders. NCCE’s conference and expo brings educators of all types and grade levels together to share discoveries and develop solutions for their greatest challenges—all while connecting to a global network of education resources. NCCE 2016 is expecting over 1800 attendees and more than 130 exhibiting companies. Join like-minded educators focusing on implementing technology as a tool in teaching and learning.  When you register for NCCE 2016, you’ll get:  Three Full Days of innovation and learning Networking with over 1800 attendees and 400-exhibitor representative Two powerful keynotes 60+ hands-on workshops 100+ sessions Access to the largest Ed-Tech Expo in the Northwest One-year NCCE membership Membership gift Don’t miss out on the great Early Bird Pricing! Register Today! The post Early bird Registration ends Friday for NCCE 2016! appeared first on NCCE's Tech-Savvy Teacher Blog.
Jason Neiffer and Mike Agostinelli   .   Blog   .   <span class='date ' tip=''><i class='icon-time'></i>&nbsp;Jan 19, 2016 06:01pm</span>
In constructing a literature review of any proposed research topic, especially for new arrivals to research, there is often a tension between giving a straight description of the relevant academic articles rather than providing a critical analysis. This is understandable. The main purpose of the literature review is to provide subsequent readers with an introduction to the subject area of the research, and this is done by constructing a narrative - a story - of the evolution of the subject area to the stage that we understand at present. This description describes the "landscape" of the research subject area - the significant and salient points and the less well-known or contested points. The literature review, however, needs to be more than just a simple description of each significant article, more than a sort of "He said… then she said…" list of opinions. The literature review, to be really useful, needs to critically evaluate the importance of each article, as well as providing a description of what was said, what methods were used, what degree of reliability the data has, etc. The reader has not only to understand the history of the development of the research topic, but to appreciate the relative merits of previous work. This is relatively easy at the start of the project, but by the end, juggling several hundred citations, it becomes a challenge. A number of students and colleagues have drawn to my attention an app called RefME which is a really interesting piece of software which enables the compilation of a reference list very quickly. Once a (free) account has been created on the app, entries of citations for books, journal articles, and lots of other artefacts can be added instantly by scanning the bar-code of the publication using a phone with the app. The reference list can be built-up and accessed from any device with a web connection. Reference lists can be divided into lists for particular projects (articles, conferences?) and each list can be exported to various formats, including a simple word document. Each citation can also be annotated, so using a simple set of phrases and tags, a critical reference list can be compiled in minutes. The app also allows citations to be input manually, which is required for older publications and those without a bar code. There are several "easy" referencing systems available at present, but the simplicity, elegance, and flexibility of this app really impresses me. Whichever method is used to compile the reference list, there are two golden rules to adhere to. Firstly, start early to compile the reference list and keep on top of it. As an article or book is read, and if you know it is going to be referred to in the text of the dissertation, it should be immediately added to the reference list. Secondly, keep a list which is an annotated bibliography, not simply the list of all the references, but copy the file and add short notes on each reference. Do not trust the memory to remember details such as page numbers (for direct quotations) and DOI numbers (for direct web access), or even for the key points of analysis and critique. As the numbers of citations begin to mount, the details begin to blur and disappear. This will act as a memory jog, and also as a useful item to share with a supervisor to discuss the merits and demerits of individual articles. As time progresses, because they are focussed on one specific research topic, the PhD student will discover relevant articles which the supervisor(s) may not have seen, and anyway, there is life after the PhD so you might want some of this material again, years down the line. Don’t trust the memory!
Frank Rennie   .   Blog   .   <span class='date ' tip=''><i class='icon-time'></i>&nbsp;Jan 19, 2016 06:01pm</span>
Living with a Seal I don’t recommend books to often. The reason is there are not a lot of good ones out there. Also, people in business tend to suggest books about business. Some of these are worth a quick browse through the table of contents to see if anything stands out. Most are not worth the time. They can be verbose and repetitive. A friend of mine told me to check out "Living with a Seal" Read More The post Get off your butt with this motivating book appeared first on renshicon.com.
Renshi   .   Blog   .   <span class='date ' tip=''><i class='icon-time'></i>&nbsp;Jan 19, 2016 05:03pm</span>
As technology continues shaping the L&D space, how do we fuse learning and technology to reimage current practices and better help leaders learn, develop, and perform?
Janice Burns   .   Blog   .   <span class='date ' tip=''><i class='icon-time'></i>&nbsp;Jan 19, 2016 05:02pm</span>
Displaying 5221 - 5230 of 43689 total records
No Resources were found.