I am using react-native-maps and polyline to draw a route on the map (I am using multiple waypoints). I want to be able to color the Polyline based on the traffic (red for heavy traffic, yellow for moderate, etc) similar to the way Google Maps does it normally.
As I am thinking of multiple ways and looking online, I've seen that you can use the Embed API, however that has to be wrapped in an iframe (not what I'm looking for). It seems the coordinates used to map the Polyline doesn't correspond to the responses received from the Routes API either (and hence I can't really use the time and distance received from there to calculate whether it is in traffic and plot the polyline).
I'd like to ask everyone if there are any specific methods or ideas to accomplish this?
Related
First, I have been reviewing some of the different Google Maps API docs, but I've never done much coding with it. I'm trying to build a simple game for kids in which, if the user clicks on a map within a certain distance of a key map point (could be within 1 mile, 100 yards, 5 miles...depending on situation), then the map point becomes visible and a custom message is displayed with it.
Which google maps api calls would enable this to work? How would I embed a hidden point on the map? With the map being rendered on the client, for security, if I could detect the point clicked and send that point via ajax to the server, then the server could send back whether there is a hidden point at that location, that seems like it could work. Or maybe there's a better way.
Can someone point me in the right direction, as to which API calls, and maybe code samples if possible? To summarize, I'm looking for the following functionality:
Track the lat/long coords of any user-clicked point on a google map. Have that click send the coords to my javascript function.
Have hidden points on the map that the user can't see, but either Maps (or at least just my server via ajax) can be aware of.
Ability to display a custom message right next to the clicked spot or hidden point, when needed.
Thanks!
When I understand correctly what you are trying to achieve it's much easier.
Draw a circle and hide the circle by setting the strokeWeight and fillOpacity to 0 . As radius use the allowed distance, as center the LatLng of the point
Although the circle now is not visible, the API will still respond to click-events on the circle, you only have to set a click-listener for the circle and create e.g. a marker at the center of the circle.
Note: a clickable circle will have a different cursor, you must set a unique cursor for the complete map, otherwise the users will be able to find the circle by hovering the map.
Demo: http://jsfiddle.net/doktormolle/0secbwuf/
I am looking for a script / tool which will allow me to define a route on Google Maps and then create a series of frames where the map slowly moves along at a given zoom level while drawing the (previously defined) route.
If it is hard to imagine think of a mini map/overview for a time-lapse/video of a drive in a car. The time-lapse/video shows you the view through the windshield and this minimap/overview shows you where the footage is taken on a map. This is actually what I'm going to use it for.
Does anyone know of such a tool or a better place to ask this question (if this is not a proper place)?
If it does not exist I will have to create it using the Google Maps API.
Is it possible to place (say 1000) markers (using set of LAT-LONG values) on Static Google map image?
Also, is there some sort of HTTP POST method to achive this or URL is the only way to go?
Basically, I was looking into Bing maps REST service - Imagery and I found that maximum 100 pushpins (markers) can be placed on to Bing map.
I would like to generate static map with unlimited markers/pushpins. Google or Bing does not matter.
Something like this: http://msdn.microsoft.com/en-us/library/ff701724.aspx#code-snippet-19
As far as I know there is no limit on how many markers you can add to a google-maps based map - however the performance of your map will decrease when you add a lot of them.
There is a nice article on developers.google.com (https://developers.google.com/maps/articles/toomanymarkers) that shows how to deal with lots of placemarks by either clustering them or rendering them on a separate layer.
The documentation for static maps states:
URL Size Restriction
Static Map URLs are restricted to 2048 characters in size. In practice, you will probably not
have need for URLs longer than this, unless you produce complicated maps with a high number
of markers and paths. Note, however, that certain characters may be URL-encoded by browsers
and/or services before sending them off to the Static Map service, resulting in increased
character usage. For more information, see Building a Valid URL.
I am pushing over 16000 markers with no problem at all, not even performance. I am using the javascript API, as long as you can put that into a variable, and push it to the canvas at a reasonable pase (1 per seccond is the speed i am pushing the markers ) there's no problem
The question is pretty descriptive.
I am working on a website that provides locations for filming.
All the data in the site is currently stored in a MySQL database including geocode data for google maps.
I need to show polygon areas for the different london boroughs that has locations.
I have all the data as kml files, idealy i would like to store this in the MySQL database.
I have had success using fusion tables to display this data, but it seems silly to me to have to have this data duplicated on google just to use a fusion map layer, can i simply use a kml layer to render this data rather than having to create a fusion table and rendering it from that?
If so, is there a resource someone could point me to for more information?
UPDATE:
Thank you for the responses so far, i thought i would update the question with a little more info .
I eventually want to have all the areas displayed at the same time on my map and then when an area is clicked on ideally it would take you to another page on the website showing locations for that specific area.
I had initially tried using KML layers but i was getting errors saying my KML was invalid.
The KML was initially stored in a field in my database table, i think probably the errors were due to me not understanding exactly how google read in the KML data.
Using polygons would be far simpler to implement as i can get this data via JSON and then render the polygons from that.
I know now its not possible to have info windows with polygons, but i would just prefer to jump directly to another website page with info for that particular area using a click handler rather than show an info window.
Alternatively as suggested showing a tool-tip with a brief description of the area and a link to the page would be better, how the tooltip itself, is it possible to render on top the map?
I am slightly worried that I will reach the layer limit for the KML.
Is it possible to have multiple polygons rendered with KML on one layer, or do i need a separate layer for each clickable area?
The Google Maps API provides a pretty straightforward method to draw polygons.
Basic Example:
var polygon = new google.maps.Polygon({
map: your_google_map_instance,
paths: array_of_latlng_points,
fillColor: "#336699",
fillOpacity: .5,
})
EDIT: For this approach, you would need to parse your KML files (sorry, must've missed that when I first read it). You can import the KML files to a KML layer
You can overlay Polygons using KmlLayer, FusionTablesLayer (as you know), or native google.maps.Polygon objects.
KmlLayer and FusionTablesLayer render them as tiles, so for lots of Polygons (if you only need click events) will be more efficient. There are limitations on the number of KmlLayers that can be displayed on the map at one time and on FusionTablesLayer (but those don't seem to be causing you problems).
There are also third party parsers available for KML (geoxml3, geoxml-v3) which will take your KML and render it as native google.maps.Polygon objects. For lots of Polygons, this will be less efficient than tile based rendering, but it does allow mouseover/mouseout, and changing the properties of the Polygons dynamically.
You could also try data layers what have lots of events so you can display tooltips, info window, status text on various mouse events.
See samples in documentation:
https://developers.google.com/maps/documentation/javascript/datalayer
If you have many polygons (where the actual value of many depends on multiple factors, can be anywhere between 100 and 1,000) the best is to use a built in layer type. The fastest are the ones rendered on server, e.g. kml layer because this doesn't create hundreds of DOM elements in browser but still exposes click events so infoboxes can be displayed for each item.
In the worst case you can implement your own rendering with an image map, obviously by using an existing library like mapnik.
https://developers.google.com/maps/documentation/javascript/maptypes#ImageMapTypes
How i can get kml file from Google Maps that contains route thru several points. Now i use this link http://maps.google.com/maps?f=d&hl=en&saddr=51.591016,-0.107382&daddr=51.359619,-0.147695&ie=UTF8&0&om=0&output=kml It work, but only for two points.
First, you should know that Google Maps and Google earth have different capabilities for displaying kml files. Google Earth has almost no limitations, you can author full mxd's to google earth with legends and everything, google maps, however, does not have nearly the same capability.
In google maps you are restricted to displaying 200 kml points on one page, this is because this application is server based and created using javascript, for performance purposes, you are limited to only 200 kml points per page. You might notice that the rest of your points are on different pages, unfortunatly you cannot view them all at the same time. One thing that you can do, Is serve up a url to your kml file (you can do this easily if you have an ftp account or with google my pages), then just enter the url into the search box, presto! all of your points will show up, only, you will not be able to route directions or edit any attributes, you can merely save to my maps and share the display of the points (again people will not be able to get directions from the points)
Serving up your kml to a url address is good practise, it will save you time, also you can use your own symbology, if you enter the url address in the upload area (as opposed to the search box) you will be able to keep your symbology, edit the attributes and get directions and all of that other fun stuff. You will however have the limitation of only being able to display 200 points per page.
Thus if you need to be able to have the user search for directions from your points, you can only have 200 points at a time :(
enter the url in the search box and all of your points will appear......but no directions..
Hope this helps.
For Reference:
http://econym.org.uk/gmap/kml.htm
http://code.google.com/apis/kml/documentation/kmlelementsinmaps.html