Using Google Indoor Maps to map your home? - google-maps

I want to be able to track somebody in their own home using their wifi signal on their phones. Is there anyway to do this using Google Indoor Maps? I couldn't find any API currently but I was just asking around just to be sure.

I don't think you can track a device by using only one point of reference.
If you use the WIFI signal power, you can only determine the position on the circle with radius set by the dropping in signal strength.
That can't possibly be what you want, you would need to determine the position of the device somewhere on that circle.
But since you only have on point of reference, which is the position of the WIFI emitter (which I'll assume is a wireless router) you cannot.
This is exactly the reason your device needs to "see" (as in direct line of sight) multiple GPS satellites. (it's called triangulation - it's actually a trilateration).
Keep this in mind also: the dropping in signal strength is affected by walls, as well as the angle the wall is forming with the line set by the device and the wifi emitter.
So multiple factors need to be considered when using the wifi signal strenght and converting that to a usable distance.
Hence, you probably won't be able to track somebody indoor using wifi. Unless you set multiple wifi emitters and record their GPS positions, and register their signal strengths in a LOT of points in the house. Which is not really feasible... or is it?

Assisted GPS, which is what most iPhone and Android devices has, works by detecting Wifi networks and strength nearby and correlating that with GPS signal. If you have neighbors who have wifi that reaches your house, particularly if you multiple neighbors with wifi, it's possible. However, that requires either that a location provider, such as Google or Skyhook or someone else has already registered that overlap and correlated it with location, and that the names of the networks are sufficiently unique (i.e. not everyone has a network named linksys) or that you do the measurements yourself and correlate these points with latitude and longitude.
The best test you can do is actually open up Google Maps on an iPhone or Android device and see if it can track you through the house.

Related

How to map some network on the streets using google maps

So, I have this fiber optic network. I would like to know if is possible to map any street where my cables are crossing.
The goal I would like to achive is like sim city, where I can see where I have an electrical network. So, in some cases I can have an entire district (or even a city) mapped.
My question are to know if this is possible to achieve with google maps...
I guess this really depends on the data you have for your fiber optic network. Once you know that you have the data needed to draw whatever graphical representation of your network, there are various ways of displaying it on top of a google map. If your network data is represented with geographical locations that are connected together, maybe you can just draw the network connections as polylines? That would at least be a fairly simple approach. Here you can read about how to draw polylines in a map:
https://developers.google.com/maps/documentation/javascript/overlays#Polylines
Using the built-in drawing features (lines, polygons, markers, circles, etc) is probably the easiest thing to do, but there are also possibilities to have more complex/custom overlays as well. You find more info about custom overlays on the URL above as well.

How does Google Indoor Navigation work?

For a project at my university I have to collect information about Google Indoor Maps. I spent several hours searching information about how Google Indoor Navigation really works. I've found several links on how to create Google Floor Plans like this:
http://support.google.com/gmm/bin/answer.py?hl=en&answer=1685896
And how you can improve location accuracy with the Google Maps Floor Plan Marker app:
http://support.google.com/gmm/bin/answer.py?hl=en&answer=2667756&topic=1685871&ctx=topic
They say the app collects public broadcast data. But nowhere information about which information is collected and how. Several discussions here and a few articles I found say that google uses wifi-access points and the cellular antennas for indoor positioning. But I couldn't find any official information from Google, which I can use in my project.
Can you suggest me where I can find answers to the following questions:
How does the Google Maps Floor Plan Marker really work? Which information is collected and how? A official technical Google paper would be nice, so I can use that for my work.
How can I increase the accuracy of the Google indoor navigation, by adding Wifi Access Points, Bluetooth stations or other technology?
How can I add additional information like Emergency exits and toilets to a floor plan, so the user can navigate with his smartphone to this special points?
Is it possible to add information about rooms, so the user can tap with the finger on them to get additional information? For Example which department is situated in this room and so on?
I found a lot stuff about indoor positioning and indoor navigation. But nothing about how google uses them.
Thanks in advance.
This project just provides maps for indoor places. It doesn't do anything special to augment navigation in these places beyond the standard (GPS, WiFi, etc).
When they talk about (augmenting) positioning with Wifi and Cellular data, they are talking about the same stuff they use on the regular Google maps. This data is collected from cell tower info, and the Wifi stuff is sniffed from the Google street-view cars and then augmented by user-data as people with devices come into contact with these devices and send info back to Google.
It is not very accurate - or even accurate as GPS. It is kind of a "ballpark" estimate. For example, if a Google street-view car detected your WiFi signal when it drove by your house - if you had no GPS, and Google Maps saw your WiFi box, it could estimate that you were somewhere within a few hundred feet of where the Google Street View car detected the signal.
Not as accurate as GPS - but not too bad if you conciser within a few hundred feet better than "no idea". In short - these sources to not give you better or more refined positioning of indoor places. They would be good - for example - to be able to tell you that you are in that particular building if you were inside, and out of GPS coverage.
Indoor positioning uses WLAN interface. To estimate the real-time location of a user, location systems have to perform a number of steps and various calculations. The calculation of more than one distance from several Access Points (APs) could be used to estimate the exact
location.
The main principle states that signal strength at the receiver is inversely proportional to the square of the distance that the signal travels.
RSS fingerprinting method is used which is based on recording and sampling of patterns of radio signals in specific environment called as pattern recognition or fingerprinting.
Since this post is a little old I thought I would still add my thoughts. First of all you can make edits for your own custom maps using MyMaps. As the previous answers stated Google Maps uses cell data, wifi data, gps, etc for tracking. It can also use phone sensor data such as your accellerometer. With the current level of wifi infrastructure it can actually be quite accurate using a method of wifi fingerprinting (The more access points the more accurate it will be given they are effectively positioned). There are several scholarly articles demonstrating its viability down to a couple meters of accuracy. I would suggest reading an article on RSSI fingerprinting. Also check the google maps developer documentation for more detail on editing map information.
Also I was reading that they will be using light detection for additional indoor accuracy (not sure if implemented yet).

Why HTML5 Geolocation?

Why does HTML5 geolocation let you share your location? What is main purpose of using geolocation, as you can get the location with IP address as well. Is there any difference between these two methods?
I'm asking because geolocation requires the user's permission and also doesn't work on all browsers.
HTML5 GeoLocation tends to be much more accurate than IP-based GeoLocation.
IP-based GeoLocation depends on databases associated with ISPs to figure out where you are. This doesn't work well when your ISP services a very large area and gives out dynamic IP addresses. The address in one town today might be 100 miles away tomorrow. Furthermore, those databases are usually not updated frequently. If your ISP sells off blocks of IPs or moves them to a new town, the database may still incorrectly think you're somewhere else.
HTML5 location uses services provided by your browser to figure out where you are. If your computer has GPS built-in (such as on many mobile devices and some laptops), it will know exactly where you are. This makes it much more useful for webapps that have a navigation or location component. For devices without GPS, it can often provide a very good approximation based on nearby known wireless signals and other factors, such as tracing what routers your computer goes through when connecting to the internet. The exact implementation depends on the computer, what hardware it has available, and how the browser chooses to do things.
For example, when I check an IP-based location service, it says that I'm in a particular large city in the same general area that I live in, but it's actually about 50 miles away.
When I use an HTML5 location based service to figure out where I am, it's only off by about 20 blocks.
If you're developing a webapp which needs location data, try using HTML5 GeoLocation if at all possible. Set up a fallback, so that if HTML5 location fails, you can use an GeoIP solution instead. This way, you will get optimal accuracy on supported browsers and devices, but will still have a solution in place when the HTML5 data are not available.
If you used the geolocation-javascript project from Google Code, you could use the following code:
//determine if device has geo location capabilities
if(geo_position_js.init()){
geo_position_js.getCurrentPosition(success_callback,error_callback);
}
else{
// use an AJAX request to look up the location based on IP address
}
Geolocation is a lot more precise than IP address, though both can be faked.
IP address just gives you country and general region.
Geolocation gives you:
Geographic coordinates (latitude and longitude)
Speed (assuming you're on a device that can measure this; most tablets and smartphones can)
Altitude (this is also dependent on the device)
Degrees clockwise from north (again, assuming the device supports this)
http://diveintohtml5.ep.io/geolocation.html has some good info on geolocation and the HTML5 geolocation API. Here's the W3C Candidate Recommendation.
Obtaining a user's location through the IP-address is by far not as accurate. The IP-address' location is mostly based on the location of the actual server, which can be requested. Often this is far away from the actual user's location, so it only provides the basic region.
HTML5 geolocation on the other hand is more precise, but the user's information is used to determine the location and often also speed along with some other things. This is based on the device's GPS if available, and otherwise on information entered by the user. Clearly this is way more accurate. Both methods can be faked though.
Getting location by IP address only gives a vague location (it is rarely any more accurate than to town, and often much less accurate than that, depending on your location and ISP).
It is also sometimes completely inaccurate: if I use a VPN to connect to my company network, I will show up as being at their office because I will have an IP address from the office, but I could actually be connecting from anywhere in the world.
HTML5 geolocation can be much more accurate -- if you have a GPS receiver in your device, then it is completely accurate, but even without that, in heavily populated areas it can get your position with an accuracy of 20 meters or less by mapping the local wireless network signals. And it doesn't matter how you've connected, it will always be accurate.
Because HTML5 geolocation is so accurate, it is considered a privacy risk, so the spec states that you must give permission before a site can use your gelocation data. Also, not all browsers or machines may be capable of providing the gelocation data. The website therefore must be able to cope with users who do not provide it, and cannot rely on it being provided.
IP address location doesn't have this kind of restriction because the location mapping is done by the server using publically available IP location mapping data. The end user cannot avoid giving out their IP address, so they cannot prevent the website mapping them using it.
So the two are completely different.
The major difference that you will see is the accuracy. IP addresses only give you a very general idea of where someone might be... Geolocation will tell you exactly where they are. To read more on geolocation go here, and a demo of how accurate it can be can be is found here
HTML5 geolocation gives the client (browser) the possibility to provide the location information of the machine. This is potentially orders of magnitude more accurate than IP location. For example, the client could have actual GPS hardware installed, or be able to triangulate the location by GSM or WiFi spots. Location by IP on the other hand is very rough and somewhere between not always accurate and misleading.

geolocation showing wrong location in google map

When I use http://html5demos.com/geo to locate myself, it shows wrong location(wrong city) in FF and chrome. Any reason why this is happening
I had the same problem using Chrome on Windows, but I got it to work, at least some of the time.
I was also using the example http://html5demos.com/geo
The location was not just inaccurate, it was also in the wrong city.
I tried the same example on my iPad (Safari) and there the location was correct. My iPad is using the same WiFi network as my PC, so I then knew it was not a problem with my ISP returning the wrong location, it was to do with the browser on my PC.
I got it to show the correct location in Chrome by going into the Chrome settings and clearing the cache and cookies.
It wasn't sufficient to just select in Chrome "Tools/Clear Browsing Data/Cookies & Cache",
it was only after in Chrome I selected "Settings/Privacy/Content Settings/All Cookies and Site Data" and deleting all cookies, did the example show the correct location.
Update 1: I tried the same geolocation example the next day, and to my annoyance it was again showing the wrong city. I tried to get it to work by clearing the Chrome settings as described above and this time this solution didn't work. However, when I used the application CCleaner and selected Cleaner/Applications and cleared all of the Chrome data (internet cache, internet history, cookies and session) the geo example showed the correct location. I'm using the latest version of Chrome. Hopefully in future versions it will work more consistently.
Update 2: I tried the procedure above at a later date and couldn't get it to produce the correct location at all. It could be that the geolocation is now returning the location of my internet service provider, rather than my location, using my IP and Google Location Services. Of course this location is fairly useless. The reason why my iPad is returning the correct location is probably because it contains an inbuilt GPS. The iPad 3G / 4G have a GPS chip built in to the GSM receiver chip, whereas WiFi only models have no GPS. When 'location services' are switched off in the iPad settings, location via both GPS and IP are switched off. It would be useful just to be able to switch off the GPS on my iPad and just use IP location, but I'm not sure if that is possible.
Update 3. As I mentioned, I'm using a WiFi stick in my PC. I have noticed that when I look at the available WiFi networks (with View Available Wireless Networks) and mine is the only network, the geolocation example returns a location in a different city, but if any of my neighbours have a WiFi network in range of my PC, the geolocation example returns my exact location, to within a few metres. i.e. the geolocation in the browser is clever enough to use this extra information to locate me.
(I think the other answers to this question completely on the wrong track. The questioner states that the location was being shown in the wrong city, so the question is not to do with the location accuracy)
Different devices have different degrees of accuracy and it is important that your application be aware of the difference. A cell phone that has a GPS unit inside of it that is switched on is usually accurate within three meters. A cell phone without a GPS unit, with the GPS unit switched off to maximize battery, or at a location where the GPS can’t contact the GPS satellites will have to use cell tower triangulation to estimate the users location and is typically accurate within 3000 meters which is accurate enough to know what neighborhood the user is in but completely useless to tell them what building they are looking at.
If the user is accessing your site from a computer connected to a land-based broadband connection it can usually pinpoint the precise address by consulting a provider database and pinpointing the exact address from the DSL or cable provider.
To get the accuracy of the location information, you can query the accuracy property on the coords object. The accuracy property isn’t exact by any means but it will give your application a good sense as to whether or not you have a nearly precise position or a neighborhood.
According to the Firefox geolocation FAQ, Firefox uses Google for location services. It sends Google the following information:
Your IP address
Information about nearby Wi-Fi access points
A random Google-assigned identifier (changed weekly)
I assume it will also use GPS data if your computer has a receiver installed, but the FAQ doesn't mention that. Maybe because there's no need to use Google's sever if you have GPS data available.
I assume that Chrome, as a Google product, is using the same geolocation database.
As for why you're getting incorrect answers, that would reside in Google's database. There are most definitely errors in there. For instance, my office computer shows up in Mexico city even though my IP address and the IP address of my employer's proxy server are both in Plano, Texas, and all other IP-to-location databases have this correct (taken from the registered whois data for the address.)
Here are two Google pages that they claim will help, although they haven't done a thing for me yet:
https://support.google.com/websearch/answer/873
https://support.google.com/websearch/contact/ip
The latter (contact/ip) is a form for reporting Google location problems that manifest as Google redirecting you to the wrong country's home page. They say it may take over a month to correct the database. I've been waiting nearly two months with no luck.
There are Firefox add-ons that can be used to force your browser to report a specific location. They're meant for debugging location-aware web services, but they could also be used in a case like this, where the normal method isn't working.
I think if you could user the the method watchPosition() instead of getCurrentPosition() the coordinates will be updated too much which will produce a better result
note : it's better to use another browser other than chrome it doesn't support the watchPosition() method good enough
I figured it out. Every mobile phone has its location mode default to High Accuracy. High Accuracy uses GPS, Wi-Fi, Bluetooth, or mobile Networks to determine location.
This might be a challenge as there are many variables to getting a device's location.
The solution will be to change the location mode from High Accuracy, to Device only or GPS only.
Device only or GPS only is supposed to use just GPS and device sensors to determine location. I have tried it, it works like a charm.
Use link below to change Location mode
https://www.verizon.com/support/knowledge-base-106080/
I depends on which method is used to get your location. If it uses IP then you could show up pretty much anywhere. If it uses Wifi then it might be just be biased data.

Geolocation location changes

Over the last few days I've been working on a project involving geolocation in HTML5 and I've become familiar with the concept. This demo as well as a similar example that forms part of my project has always been accurate in determining my location to a few hundred metres. However, as of just now they all plot me as being in the nearest large city. For my project it is important that the location remains constant - what could have prompted this?
Location information can be sourced from GPS and location inferred from network signals such as IP address, RFID, WiFi and Bluetooth MAC addresses, and GSM/CDMA cell IDs, as well as user input.
It depends on what device you're testing and where it is sourcing geolocation data from. IP address lookups may change as databases are constantly updated, or a shared IP address will change depending on user input from other users. An accurate GPS fix may not be available right now. Your device temporarily switched cell towers. Etc...
If accuracy is your primary concern then use watchPosition instead of getCurrentPosition and monitor the accuracy of the returned position, only update when that drops below your threshold.