There’s nothing better than getting your hands on some fresh new tech. While it might not have the same appeal as when you get that new desktop or laptop home and get a to take off the protective wrappers and start your good housekeeping (backup discs, anti-virus, etc) before installing everything nice and fresh for the first time, getting a new server for a client, setup ready with the basics to be configured has its own rewards. Albeit over RDP.
You’re going to be deploying on this box, developing sites you want to perform well. So you want to get it right and make it the best setup possible – for you and the client.
I thought I would gather together the key items that you definitely want to get right plus show you how to make best use of the disk space available (depending on your setup).
My bit of tech has the system on a C:\ drive running on a RAID 1 setup with a D:\ drive left free to play with on RAID 5 setup. This is where use of disk space comes in. We have the luxury of the potential to expand our D:\ drive in the future with the minimum of fuss (in theory) because of the RAID 5 setup. Given that this server needs to grow with our client and their hosting needs it makes sense that we host the websites and their databases on this drive rather than the C:\ drive.
So in with the basics of FTP and SMTP, I’ll also show you how to go about migrating your default configuration to another volume on your server. This is also the typical order of priority I would give these tasks.
FTP
To install the FTP service on Windows Server 2008 follow the steps below.
NB: Windows Server 2008 R2 will be a different process.
- On the Start menu, click Administrative Tools, and then click Server Manager
-
In the Server Manager Pane, in the Roles Summary section, click Web Server (IIS)
-
In the Web Server (IIS) section, click Add Role Services.
-
Under Role services, select FTP Publishing Service. This will install the FTP service and the FTP management console.
- Click Next, and then click Install.
Using IIS6 for FTP use the following steps to complete the setup:
-
Right click the Default FTP Site and view the Properties
-
Set the home directory to D:\inetpub for example
-
Set Directory Security to ‘Denied’ and add the CJ IP addresses
-
View the Security Accounts – the user account used here must be added to the Directory permissions on D:\inetpub with ‘Full Control’
-
Ensure the FTP site is started
-
Finally test – this setup will allow CJ access using the server IP address and anonymous access ticked.
-
The service is a manual service so locate the ‘FTP Publishing Service’ in ‘Services’ and set startup to ‘Automatic’.
IIS
Your default setup would in theory normally suffice here but we want to move IIS to the RAID 5 setup. To do this there are a number of scripts you need to run, a little tedious but well worth it! They’re well documented here: http://blogs.iis.net/thomad/archive/2008/02/10/moving-the-iis7-inetpub-directory-to-a-different-drive.aspx
SQL
To make the most of the RAID 5 setup we’re going to move SQL Server across to the RAID 5 volume. The links below document in detail how to do this. Follow the steps exactly and you won’t go wrong.
SMTP
This configuration has SMTP running in IIS6. Some useful links are below to aid in setting up your SMTP service.
If your server doesn’t have IIS already installed then this website could help you with that too: http://www.itsolutionskb.com/2008/11/installing-and-configuring-windows-server-2008-smtp-server/
Fortunately for me SMTP is already installed so I just needed to configure it. The applications that would be running on this server were ASP.NET – this website was handy in getting things setup too:
http://devlicio.us/blogs/mike_nichols/archive/2008/05/07/configuring-iis-6-0-to-send-mail-via-smtp-for-asp-net-applications.aspx
One of the key things for me was securing the SMTP relay to ensure it couldn’t be hijacked. Here are the steps I followed:
The SMTP service is most likely to be disabled so despite configuring IIS 6 SMTP you won’t be able to start the service.
- View the service list in the Server Manager and locate ‘Simple Mail Transfer Protocol (SMTP) and change the status from ‘disabled’ to ‘Automatic’.
-
Then start the SMTP service in IIS 6.
-
In IIS 6 right click the SMTP Virtual Server and view ‘Properties’
-
Under the ‘Access’ tab click on ‘Relay Restrictions’
-
Select the option ‘Only the list below’
-
Add the IP: 127.0.0.1
-
Add the IP of the SMTP Relay
If you don’t know the IP address of the SMTP Relay, enable logging in IIS 6 and run the Telnet test (see below). Access the log file on the server under: C:\Windows\System32\LogFiles\SMTPSVC1
This will show the IP address attempting to relay the email. You need to allow this.
Run a test in command prompt using Telnet: http://support.microsoft.com/kb/323350
Something every developer has to do when creating a
website/online application is test their work. My passion is acheiving zero defects so in my MVC application I want to see how
I can work with Unit Testing. First off
I had a look at this tutorial (http://msdn.microsoft.com/en-us/gg618510)
and had a go with my own application. Things didn’t quite add up despite
setting Actions, etc to the appropriate values. So my next port of call is to
download the application used in the tutorial and see how far I can get!
Since my last post on mobile browser detection I’ve had a play with the code, fixed the map overlap issue that I had a couple of posts ago, and have been putting my colleagues here to work giving me a good set of results from testing.
So, what caused the map to overlap on some phones and not others? The media query selecting the CSS to use. It would appear having followed some guidance on
http://www.html5rocks.com/en/mobile/mobifying.html which showed an example calling ‘handheld’ in the query. Given that this was focused purely for mobile phones at the time I felt it was reasonable to assume I should put this in. However many phones don’t recognise this value in the media query and so the mobile css was not picked up. Cleansing my media query to be based on screen size alone meant that it was picked up by any device falling within the media query’s values.
So, now I had a website which would display the map correctly, now I just wanted to test the redirects. I setup the following URLs will separate instances of the redirect:
Server Side Mobile Detection Redirect
Client Side Mobile Detection Redirect
The results are in and they make for interesting reading:
- Samsung Galaxy SII | Android | OS 2.3.3 | Google Android
Outcome: Page redirects on each URL, map displays correctly, can move around map
- Samsung Omnia 7 | Windows Phone 7.5 | IE 9
Outcome: Page redirects on each URL, map displays correctly, cannot move around map
- HTC Mozart | Windows Phone 7.5 | IE - Latest on WP7
Outcome: Didn’t redirect. Phone was set to view websites not mobile versions so phone ignored the redirect. When phone was set to view mobile sites the redirect worked on both occasions.
- HTC Trophy 7 | Windows Phone 7.5 | IE – latest version on WP7
Outcome: Page redirects on each URL, map displays correctly, cannot move around map
- iPhone 3GS | OS 4.1 | Safari
Outcome: Page redirects on each URL, map displays correctly, can move around map. This particular user discovered they could use Street View too!
- iPhone 3GS | iOS 5.0.1 | Safari
Outcome: Site loaded, map loaded, nothing overlapped and was able to move around the map per the normal Google Maps app.
- iPhone 4S | iOS 5.0.1 | Safari
Outcome: Redirected but would not load map. Had javascript enabled.
- iPhone 3GS | latest OS | Safari
Outcome: Redirected but would not load map. Had javascript disabled. Enabled and tried again but would still not load the map.
The interesting thing here is that the iPhone, regardless of model, appeared to be a bit hit and miss! While the idea of creating a mobile website, there are limitations and sometimes they’re not even down to a specific phone and/or configuration.
Mobile Apps developed to the mobile platform of choice certainly have their place. Apps are there for users to perform actions that might otherwise be available on a normal website in a mobile environment. Browsing stripped back information on mobile websites makes sense, and there will undoubtedly be some simple functions that can be performed logically on a mobile website, but there are some that clearly cannot.
In my last post I had stumbled upon a site issuing browser detection code in various coding languages (detectmobilebrowsers.com) because I thought I needed to detect if the website was being viewed by a mobile device. Out of that I have some javascript/jQuery code which appears to do the job (still requires some testing though!).
Here’s a snapshot of the code used:
function CheckMobile() {
var isMobile = false;
if (BrowserMobile(navigator.userAgent) || BrowserMobile(navigator.vendor)) {
isMobile = true;
}
return isMobile;
}
function BrowserMobile(a) {
jQuery.browser.mobile = /android.+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i.test(a) || /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|e\-|e\/|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(di|rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|xda(\-|2|g)|yas\-|your|zeto|zte\-/i.test(a.substr(0, 4));
return jQuery.browser.mobile;
}
I figured if I could have the need to detect the browser client side I would undoubtedly have the requirement somewhere in the future to do it server side. I had a play with the code the C# section spat out and it seemed pretty good. Very little needed to be done to get things working.
Here’s a snapshot of the code used:
string u = Request.ServerVariables["HTTP_USER_AGENT"];
Regex b = new Regex(@"android.+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|symbian|treo|up\\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino", RegexOptions.IgnoreCase | RegexOptions.Multiline);
Regex v = new Regex(@"1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\\-(n|u)|c55\\/|capi|ccwa|cdm\\-|cell|chtm|cldc|cmd\\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\\-s|devi|dica|dmob|do(c|p)o|ds(12|\\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\\-|_)|g1 u|g560|gene|gf\\-5|g\\-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd\\-(m|p|t)|hei\\-|hi(pt|ta)|hp( i|ip)|hs\\-c|ht(c(\\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\\-(20|go|ma)|i230|iac( |\\-|\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc\\-|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|e\\-|e\\/|\\-[a-w])|libw|lynx|m1\\-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m\\-cr|me(di|rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\\-2|po(ck|rt|se)|prox|psio|pt\\-g|qa\\-a|qc(07|12|21|32|60|\\-[2-7]|i\\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\\-|oo|p\\-)|sdk\\/|se(c(\\-|0|1)|47|mc|nd|ri)|sgh\\-|shar|sie(\\-|m)|sk\\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\\-|v\\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\\-|tdg\\-|tel(i|m)|tim\\-|t\\-mo|to(pl|sh)|ts(70|m\\-|m3|m5)|tx\\-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|xda(\\-|2|g)|yas\\-|your|zeto|zte\\-", RegexOptions.IgnoreCase | RegexOptions.Multiline);
if ((b.IsMatch(u) || v.IsMatch(u.Substring(0, 4))))
{
HttpContext.Session["IsMobile"] = "1";
Response.Redirect("/PageToRedirectTo");
}
I’ve tested the code in my PC’s web browser, so I know it knows that I’m not a mobile device. Now for some mobile testing!
Following on from my last round of feedback I figured I needed to focus on sorting out the iPhone display issue given this is a key player in the mobile market!
I figured I needed to get the page to reload into the empty <div> tag but I only wanted to do this if I had a mobile viewing the website. I set about locating a mobile browser detection script. Previously I’ve found this to be a closely guarded secret so I was unsure what I would find. I stumbled upon this website: detectmobilebrowsers.com. It provides code for all manner of coding languages – my key languages of interest were jquery, javascript and c#.
I figured for this implementation I would just crack on with the javascript/jquery and get the detection running so I could reload the Google Map. The code it spat out wasn’t a ready made solution – I still had to figure out what it was doing to a certain extent and then make custom functions out of the code that was presented. This didn’t take too long and did physically seem to work.
So, very pleased with myself I decided to call up one of my colleagues to test out my newly deployed update on their iPhone 4S. To my amazement it didn’t work! Google Maps are iPhone compatible – what am I doing wrong?! It can’t be the loading as even that didn’t make a difference!
Another colleague also on an iPhone 4S came to my aid and the website worked on their phone. Wah?! This is crazy! Good but crazy! All settings and iOS versions appeared to be the same so nothing made sense. Apparently this phone is due to go back for other issues so I could only assume that this was the problem – but could I?
I decided to broadcast to the company in a ‘Your Country Needs YOU!’ stylee and had a load of responses confirming the site worked on various iPhones. Cheers guys. The men in white coats have been stood down. I am Not going mad. Phew!
So my last investigation looked at how I could get my website rendering as a mobile website with a few CSS tricks. Following on from this I have a second round of feedback from my fellow colleagues using this demo site: http://demo.creative-jar.com/mvc-google-maps-mobile. Since my last post I’ve updated it with a couple of bits to see if it would help:
- The CSS has been stripped back properly for mobile rendering (in case this could have had any possible cause for display issues)
- I added the word ‘Loading…’ in my empty map <div> since this could have been causing a problem.
- I added a <noscript> tag to the page so I could explicitly see if someone had javascript enabled or not in my feedback.
I resubmitted my demo site out and here are the results:
- HTC Mozart | Windows Phone 7.5 | IE – latest version on WP7
Outcome: Continues to perform well with geolocation enabled but the map flowed outside of the mobile design.
- Blackberry Curve 8530 | BB O/S 5
Outcome: Javascript was turned off. Map loaded once javascript was enabled but the map flowed outside of the mobile design. The geolocation was not supported and so the user was planted in Scotland.
- iPhone 4S | iOS 5 | Safari
Outcome: Just showed the word ‘Loading…’ so looks like I need to consider doing some sort of mobile detection script here to reload the map in.
- Samsung Galaxy S II | Android | Google Android
Outcome: Unsurprisingly, continues to perform perfectly. Cannot fault.
When the site was run on the Blackberry we had a bit of a play with the settings, the first one we enabled was javascript location support. The next was general javascript support. After some testing we got the map to display, albeit incorrectly – over flowing the dimension of the <div> tag, but the geolocation failed. From my script it put my tester in Scotland which actually means that both the W3C Geolocation and Google Gears both failed.
I also figured I would do some research into what platforms the Google Maps API actually supports and it turns out that it only supports iPhone and Google Android at present. I found this Google Group thread in which a Google Employee comments informally on the topic regarding Windows phones: http://groups.google.com/group/google-maps-js-api-v3/browse_thread/thread/2e735d1347c9900a. So there may be some hope for Windows phones in the future, but as far as Blackberry OS and Symbian goes, you’re out of luck!
Now I've had some feedback on the basic website I wanted to see what I could do to get my website displaying in mobile format without having to create a whole other website just for a mobile audience. After some searching I came across this website:
http://www.html5rocks.com/en/mobile/mobifying.html which gives some great tips for CSS selection using the media attribute on the CSS link.
I implemented some of the items into my website application and deployed a further demo site so I could do some testing of my own: http://demo.creative-jar.com/mvc-google-maps-mobile. Note how when you view this website in the desktop browser it looks just like my previous demo site: http://demo.creative-jar.com/mvc-google-maps.
When viewed on my Android phone the website is in its mobile 'version'. Everything is nicely zoomed in so I can see things clearly - including the Google Map - all done by simply implementing the steps detailed in the HTML5 Rocks website and then adjusting the iphone.css to suit the screen.
My thoughts rapidly returned to the iPhone that failed to display the Google Map. On my search for information on this problem I stumbled across this website: http://www.pluralsight-training.net/community/blogs/jimw/archive/2009/10/30/iphone-google-maps-api-and-the-iui-framework-can-t-we-all-just-get-along.aspx - it turns out this is likely to be a load order issue caused by the empty <div> tag, so I need to now get the mobile site loading slightly differently for mobile in order to get things displaying correctly. Trouble is, I need a mobile detector script of some description. I know I can use the media attribute in the CSS to get the website displaying as I want, however, how can I now detect that my website is displaying on a mobile device and therefore warrant this special treatment?
My colleagues at Creative Jar have very kindly taken the time to view my demo website and given me the much needed feedback covering the big 4 platforms on the market today. The only OS not covered below is Symbian but that is now in decline with Nokia’s decision to drop it, therefore for the purposes of this exercise I’m not going to worry about that one too much despite it’s still fairly widely used at present.
Each piece of feedback contained the make and model of phone, OS and browser as well as the outcome of viewing the Google Map page on the site:
- HTC Mozart | Windows Phone 7.5 | IE – latest version on WP7
Outcome: Accurate when GPS allowed and it displayed the web page as it would in a desktop browser, retested without GPS and denied access.
- Blackberry Curve 8530 | BB O/S 5
Outcome: Failed to load the map - just a blank screen
- iPhone 4S | iOS 5 | Safari
Outcome: Failed to load the map – just a blank screen
- Samsung Galaxy S II | Android | Google Android
Outcome: When browser location sharing switched on the location was accurate and it displayed the web page as it would in a desktop browser. Retested without browser location sharing and was denied access.
The HTC Windows 7.5 phone and Samsung Android phone performed perfectly, rendering the website without issue and gave excellent geolocation accuracy. The Windows phone used GPS for the positioning so was naturally very accurate. The Android phone didn’t have GPS enabled on the phone and simply used the location sharing naturally available through the GSM/3G service. This was accurate to within around 10 metres which was comforting given that not everyone wants to enable their GPS service that could cost them GPS data fees.
The Blackberry was also somewhat unsurprising given that by default Blackberry has javascript disabled – the language with which the Google Maps API communicates. I do need to get this confirmed though since it was not communicated whether javascript was enabled or not. It could of course be a similar issue to the iPhone.
The iPhone however was the big surprise. A blank screen? The page did load but no map? This was most odd but to me felt like this could be a CSS issue given that to render the Google Map you are essentially rendering an empty <div> tag.
The website has now been deployed so we can crack on with some user testing. We've already see how it performs on a desktop browser, so how will it perform on a mobile phone? If you want to try for yourself you can view the website here: http://demo.creative-jar.com/mvc-google-maps
Click on the Google Map button and you'll see the map load. There are 3 points plotted in Berkshire - one being the Creative Jar office in Twyford.
The challenge now is to see if this website (only displayed as a website - there is no mobile version at this point) works on a mobile phone.
The key points I'm looking for are:
- Does the map render on the page?
- How does the geolocation work with location sharing on/off?
- How accurate is the geolocation?
My colleagues at Creative Jar are very kindly assisting me in my research so I’ll post my findings next time.
I've finally plotted the points on my map dynamically, which was a bit of a challenge in itself.
There are two ways you can achieve this by mixing Razor mark up with Javascript.
The first way I located was this and you have to wrap your Javascript in the <text> tags that you see below:
@foreach (var item in Model) {
<text>
addMarker(map,
'@(@Html.DisplayFor(modelItem => item.Latitude))',
'@(@Html.DisplayFor(modelItem => item.Longitude))',
'@(@Html.DisplayFor(modelItem => item.Title))',
'@(@Html.DisplayFor(modelItem => item.Summary))',
'@(@Html.DisplayFor(modelItem => item.Postcode))');
</text>
}
The second method is much cleaner and easier to read:
function addMarkers(map) {
@foreach (var item in Model) {
@:addMarker(map, '@item.Latitude', '@item.Longitude', '@item.Title', '@item.Summary', '@item.Postcode');
}
}
Having plotted my points successfully I merged in my findings for centring the map on your current location. So far this has been tested on PC in Mozilla Firefox and Google Chrome.
Oddly it didn't place me where I thought it might. Using the W3C API as the priority it was placing my centred location around Salisbury, Wiltshire.
Using this website I could understand a little more about my browser's location: http://whatismyipaddress.com/w3c-geolocation - here you're placed on the map to see where you’re actually located at that point in time.
I also found this website which gives a greater understanding of how Google Maps uses the W3C Geolocation API: http://apb.directionsmag.com/entry/how-google-maps-uses-the-w3c-geolocation-api-and-google-location-services/161053
This page from Mozilla also adds to the understanding: http://www.mozilla.org/en-US/firefox/geolocation/
It turned out that the W3C Geolocation API was issuing co-ordinates of: 50.719411, -1.981129, where as the Creative Jar office co-ordinates are: 51.477481, -0.868413
The next test has to be to get this up to a demo space and see what happens on a mobile and see how well supported the javascript is.