How does Google do Maps' Street View Cursor "Following" - google-maps

In Google Maps Street View your cursor turns into a rectangular/oval shape as you mouse over different parts of the scene. For example:
http://maps.google.com/?q=loc:+Maryland+Ave+at+e.+26th+st+Baltimore+MD+US&ie=UTF8&z=16&iwloc=A&layer=c&cbll=39.319313,-76.618426&panoid=6W2XgkHoGuf6_SKv0LIL9Q&cbp=12,307.06,,0,3.16
As you move the cursor over the building it "hugs" the walls. It's not just as simple as following the intersection because if you continue on to the left you can see the angle change as it hits different faces of the buildings.
Do they do some sort of image analysis to identify faces of the buildings or do they, as they take the picture, do some sort of laser range finder and then later combine it with the picture?

They do use laser range scanners. And according to the Google Lat Long Blog:
We have been able to accomplish this
by making a compact representation of
the building facade and road geometry
for all the Street View panoramas
using laser point clouds and
differences between consecutive
pictures.

Related

Library to generate heat map map overlay based off point values not point densities

I have a set of data points where each point is expressed as a lat/lng. Each of these points has a value associated with it that changes over time. I would like to produce a heatmap animation overlay on top of a map that reflects this change in value over time. Note: I am fine with producing a series of static "snapshots" and piecing them together frame-by-frame into an animation, so the heatmap library itself does not have to support animation.
My first attempt was to use the HeatMapLayer which is a part of the Google Maps visualization library. However as per the question Heatmap based on average weights and not on the number of data points, it would seem that this particular visualization library insists on weighing the density of points in determining what color to use surrounding a given point.
I am after a solution that only considers the value of the points rather than the density. To give an example, assume one wanted to visualize the ambient temperature of a city over time, but there were more thermometers installed in some parts of the city than others. You wouldn't want a small area with many thermometers installed to show up red just because there were many thermometers - you'd want it to show up red only if it was hot there.
Basically, I want a single color for each of my points that reflects the intensity of the point's value, and then a gradient spatial transition between any two point's colors. It doesn't have to be Google Maps - the key criteria is just i) must base colors off point values not point densities ii) must overlay on top of a map and iii) ideally has a programming abstraction that talks in terms of lat/lng's, rather than requiring manual conversion to e.g. Euclidean space.
global tempsYou can do this with multiple:
gmaps.symbol_layer
and then just layer them up:
fig_gmap.add_layer(red_markers)
fig_gmap.add_layer(yellow_markers)
fig_gmap.add_layer(green_markers)
fig_gmap.add_layer(blue_markers)
I haven't been able to successfully pass a value that gives me a good temp color for the heat maps, just always get some variation on the density thing, which is a one trick pony. It would be nice having a way to do this and animate the marker icon without java.
Maybe you should try heatmap.js. It has a plugin for Google Maps: http://www.patrick-wied.at/static/heatmapjs/plugin-gmaps-layer.html
This library uses datasets made of coordinates and values. I think it will behave the way you described.

How do I plot a vector (with a magnetic heading and magnitude) in Google Maps?

I have a table with a year's worth of wind data for a specific latitude longitude. I want to plot this as an arrow in Google Maps. Each data point has a timestamp, heading (true), and magnitude (knots), but it is just contained in a spreadsheet.
I was thinking the easiest way is to just create a new layer using geoJSON data, but I've never used geoJSON before.
How can I plot this in Google Map api v3? Thanks!
EDIT:
I did some research, and I think the best way is to just place a marker over the lat long point, and generate a ton of arrow images (probably in 5 degree and .5 knot increments, so I don't have a million images). Then just title each arrow based on its parameters (something like 01030.png, where 010 is the direction and 30 stands for 3.0 knots) and when the script calls for the marker image, just include those attributes when it calls for the image name.
I'll post the code when I make it, so other people can see.

Maps API - Disable parts of the map

I am doing some research for what Map API to use for a coming project.
The main requirement is the ability to lock a map, and the ability to disable parts of the map.
Think about a special purpose map for Europe where I would like to disable and gray out the non-european countries.
A click on those grayed out areas should do nothing, meaning for all of the world except for Europe.
So, is it possible to disable large portions of the map?
Is it possible to add layers for the borders for each country, that is clickable, for instance on Germany?
I am looking at Bing or Google Maps at this point. Which one is more developer friendly one?
Bing looks so much nicer with the birds eye, much easier to read out the map and know what you are looking at. I find Googles full of clutter and always have problem knowing what I am looking at.
Possible approach(google-Maps): use a Polygon with multiple paths.
1 path for the entire world(vertices defined in clockwise order)
other paths for the enabled area(vertices defined in opposite clockwise order)
The result will be a polygon that covers the entire world with a hole for the enabled area. The map will not respond to click-events outside the enabled area(because it's covered by the polygon). The map will still respond to dblclick and zoom in, but this may be avoided by cancelling the propagation of the dblclick-event of the polygon.
It wouldn't be possible to gray out the dissabled area, but you could use the fillColor of the polygon to signalize which part of the map is disabled.

Custom Shape overlay in Google Maps

Objective: I'm trying to trace the NYC Boroughs in an overlay to google maps.
Issue: I can't find a proper shape. If i go to google maps and search for Bronx, I will get a nice outline of the Bronx. My problem is none of the shapes in the google documentation seem to fit with what i'm trying to do. The best match looks like a polygon, but that doesn't work well with all of the borders because of all the jaggedness. I'm trying to use overlays because I need them to be clickable
https://maps.google.com/maps?q=manhattan&ie=UTF-8&hq=&hnear=0x89c2588f046ee661:0xa0b3281fcecc08c,Manhattan,+New+York,+NY&gl=us&ei=thEQUISLBO610AG4qYDYCA&ved=0CKkBELYD
vs
http://jsfiddle.net/xHKB7/5/
I don't need to individually trace each island, as what I'm doing is not that precise - but if you look at queens i don't see how i can reasonably use a polygon to capture this shape
https://maps.google.com/maps?q=manhattan&ie=UTF-8&hq=&hnear=0x89c2588f046ee661:0xa0b3281fcecc08c,Manhattan,+New+York,+NY&gl=us&ei=thEQUISLBO610AG4qYDYCA&ved=0CKkBELYD
I've tried starting at the center, and then tracing the border because i've found this to give me the best detail from all sides, but it obviously leaves this ugly line.
http://jsfiddle.net/xHKB7/6/
FusionTables contains some data that might be useful to you:
Bronx - from New York State counties
Richmond Cty (Staten Island) - from New York State counties
(from this page)
Not sure if this is any better than the one you drew.

Street view google map URL and coordinate query

I am currently converting a number of simple Google Map Street View links into URL requests for static Street View images. Most of the conversions work except for a few odd instances which I am struggling to explain.
Firstly, in the normal way, I access Google Maps as a regular user and find the position on a road in London I want to see called London Wall, and I point upwards and eastwards. This is the resulting link: (please test it and you will see a prominent building called Winchester House with a smooth curved exterior in the flash Street View used by Google consumers):
http://maps.google.com/maps?q=Winchester+House,+London+Wall,+London,+United+Kingdom&hl=en&ll=51.516287,-0.083299&spn=0.007838,0.018196&sll=51.522309,-0.080509&sspn=0.06227,0.145569&oq=winchester+house,+london+wall&hq=Winchester+House,&hnear=Wall,+1+Denbigh+Rd,+London+W11+2SJ,+United+Kingdom&t=m&z=16&layer=c&cbll=51.516305,-0.083422&panoid=U6g4EoZt5cM4e2WFiDLoxA&cbp=12,268.2,,0,-16.66
Secondly, if I adopt the same coordinates from the above link to get a Static Street View Photo via the following URL request, I get a different result:
http://maps.googleapis.com/maps/api/streetview?size=800x600&location=51.516305,%20-0.083422&fov=110&heading=268.2&pitch=16.66&sensor=false
This second view is still looking westwards along London wall, but the Static Street View photo is set approximately 50+ metres on the wrong global coordinate (please try the link above and you will see a footbridge is in front of Winchester House, which lies in the distance).
This is confusing when both URLs above appear to be using the same global coordinates. (I have referenced the same coordinates for many other different links and both URLs usually show the same view).
I would be grateful for anyone's help on this and understand whether anyone has experienced similar problems or inconsistencies with different Google coordinates.
Many thanks
Mike