Google Maps, HTTP in China and Mixed Content Error - google-maps

I'm displaying Google maps in China, the API there uses HTTP. However, my website is HTTPS.
Chrome, and any other mainstream browser throws a Mixed Content error.
How do I overcome this?

Was not able to find an easy solution with Google Maps.
However, using Gaode Maps ( 高德地图 ) helps was an alternative for Chinese based clients on sites HTTPS is needed.
They have an SDK with English instructions and similar functionality and coverage to Google Maps.
It is slower than Google Maps for non-China based users but is still okay to use.
You could detect the user's location and use Google Maps and Gaode Maps as needed.

Related

Can I generate URLs to point to Google Maps on all platforms and perform some actions

Regardless of the platform I would like to launch Google Maps and optionally perform some actions like showing location, route etc
Google provides Google Maps URLs which allows you to do just that. You can build a universal, cross-platform URL to launch Google Maps and perform searches, get directions and navigation, and display map views and panoramic images. The URL syntax is the same regardless of the platform in use.
You don't need a Google API key to use Google Maps URLs.
Google Map URLs
Recently, in May 2017, Google launched the new Google Maps URLs API. You can read about this API in the official documentation
https://developers.google.com/maps/documentation/urls/guide
This API is intended to provide universal, cross-platform Google Maps URLs. So you can use it with websites, mobile apps, etc.
Search, directions, display map and display street view panorama modes are available in this API.
I hope this helps!

Google maps on a self hosted website

I've a small self-hosted website hosted on my home server via no-ip.com, wonder if it's legit/possible to use Google maps on it and what would be the viable options if not?
What do you mean with "to use Google maps on it"?
If you just want to allow your users to see a map and navigate on it, it is possible. Google has published a SDK (Google Maps API) that allows other people to interrogate Google servers, collect data (maps), show maps to users and perform a few operations related to positioning and navigation. There is a web (javascript) toolkit for this here:
https://developers.google.com/maps/documentation/javascript/
Other info here:
https://developers.google.com/maps/
https://developers.google.com/maps/documentation/
If you want to host a clone of the Google Mpas service on your PC, then no, this is not possible (both for legal and technical reasons).
A well-known, largely appreciated alternative to Google Maps is openstreetmap:
http://openstreetmap.org/

Using Google Maps V3 offline, e.g. with cache-manifest?

I'm writing an HTML5 mobile application that uses Google Maps V3 with a custom layer of OpenStreetMap tiles.
The OSM tiles (from tile.openstreetmap.org) are set to cache for just over 24 hours, and I'm using a cache-manifest for all my HTML/JS/CSS.
So the application could in theory be used offline, except the Google Maps interface isn't happy when offline.
It always wants to call to the Google Maps server at http://maps.google.com/maps/api/js?sensor=false&region=GB - when this fails, Google Maps fails to load.
Is there any way to use Google Maps V3 API offline?
Could I cache-manifest http://maps.google.com/maps/api/js?sensor=false&region=GB, or would that be a bad move?
(Sorry for this rather beginner question, let me know if I can explain better!)
Google coders themselves have tackled this problem and unfortunately the information isn't well disseminated. But yes you can use cache-manifest to do exactly what you've described.
Required Readings
First take a look at the Google Code blogpost here: http://googlecode.blogspot.com/2010/04/google-apis-html5-new-era-of-mobile.html
Then have a read at Missouri State's own post: http://blogs.missouristate.edu/web/2010/05/12/google-maps-api-v3-developing-for-mobile-devices/
The Technique
You must cache every URL used by Google Maps
Employ methods to battle Chrome's and Firefox's stubborn caching methods by removing it from "offline websites"
All customizations must be client-side in javascript
Your cache file will look like (as per Missouri State):
CACHE MANIFEST
/map/mobile/examples/template.aspx
/map/mobile/examples/template.css
/map/mobile/examples/template.js
NETWORK:
http://maps.gstatic.com/
http://maps.google.com/
http://maps.googleapis.com/
http://mt0.googleapis.com/
http://mt1.googleapis.com/
http://mt2.googleapis.com/
http://mt3.googleapis.com/
http://khm0.googleapis.com/
http://khm1.googleapis.com/
http://cbk0.googleapis.com/
http://cbk1.googleapis.com/
http://www.google-analytics.com/
http://gg.google.com/
Caveats
You will need to be entirely HTML5-based and recognize the impacts this will have on your users. This situation is handy where either your users are up-to-date on browser standards/devices or you have control over user choices.
Hope this helps.
I have http://maps.google.com/maps/api/js?sensor=false in the CACHE section of cache.manifest, together with my application files and there isn't any problem.
Although, I believe you also have to cache other files that the Google Maps API requests. You can take a look at the files downloaded by your app and include them.
Not possible!
Google map CDN URLs have dynamic nature,
https://mts0.googleapis.com/vt?pb=!1m4!1m3!1i8!2i234!3i15...
https://mts1.googleapis.com/vt?pb=!1m4!1m3!1i8!2i233!3i155!!...
No wildcard characters are allowed in CACHE section of the HTML5 cache manifest files
We can not have some thing like,
CACHE MANIFEST
/css/style.css
/js/libs/modernizr-2.0.6.min.js
/js/libs/jquery-2.1.4.js
http://mts0.googleapis.com/*
http://mts1.googleapis.com/*
http://fonts.googleapis.com/*
NETWORK:
*
I had a google map project that I needed offline. I found Bing Maps (https://www.bingmapsportal.com/ISDK/AjaxV7) is much better offline and switched my project over to that and I'm happy. I ran the google and bing version side-by-side in offline mode and Bing was great. Whereas google would immediatey fail on tile loads, Bing maps cached more tiles and appeared to even resize zoomed tiles to at least give you something in offline mode.
I know the question here is about Google maps; but if you don't care about bing vs. google and really just need offline support, I'd highly recommend trying Bing maps. It solved it for me.

Embedding Google Maps over SSL

I'm embedding a map on a page via https URLs but I'm still seeing resources loaded via http:// in the Net tab in Firefox. I've done some Googling and everything I'm finding is about the Google Maps API. Has anyone gotten this to work over SSL before?
http://googlegeodevelopers.blogspot.com/2011/03/maps-apis-over-ssl-now-available-to-all.html
Ismail is right - check out the thread on Options for Google Maps over SSL.
Personally I had to migrate my Google maps to Bing for the https connection api.
The Google map apis should now be available over https - but at least from my point of view there may be clashes with the licence (not-for-profit organisation but the site is access protected).
Have a look at Mapstraction if you want to swap map interfaces around to try them out.

Map controls for sites running https

A team I work with is currently in an unfortunate situation. They've spent a lot of time integrating the google map control on their site but they didn't discover that to run google maps on a https site you must license the control (and it isn't cheap) and the same goes for bing maps.
So my question is do you know of any cheaper/free map controls like google or bing maps?
OpenLayers
In version 3 of the API, HTTPS support is now free.
Why can't they put the google maps part on a non-secure page or frame? The google licence says that you must have it on a publicly accessible site to benefit from the free version of the licence, so even on a http site, you may still need to pay for the data.
All other mapping tools are dependant on the expensive map source data, so you'll not find any. The exception is OpenStreetMap which uses community-supplied map data.
MapQuest's API allows SSL usage through the free license.
I was looking into this and found this post - you can use Bing maps over ssl with no problems, and it seems to work fine.
For the danish users I found the following VisKort component on SoftwareBørsen. It looks like it is based on OpenStreetMap, but I'm not sure.