4号是地理编码(#3称为......反向地理编码)
看看android的来源,它似乎基于手机信号塔进行三角测量(当没有GPS或WiFi可用时)
有一些常见的蜂窝塔三角测量提供商(或越来越普遍的WiFi网络三角测量):Skyhook Wireless,Google和Apple。
您可以尝试与这些公司达成交易,或者在每个人的设备上安装他们的自定义软件,但这听起来像是很多工作。我认为更成功的是利用一些框架抽象,它可以在很多设备上运行,而无需软件处理每个细节。
如果您的用户使用Web,W3C Geolocation API为支持它的现代浏览器(桌面,笔记本电脑和移动设备)提供与设备当前位置的实现无关的访问。如您所见,还有本机平台特定的框架(iPhone和Mac OS X上的CoreLocation,Windows 7位置平台,Android的LocationManager等)。
如前所述,地理编码和反向地理编码服务可以帮助您在lat-lon坐标和城市地址之间进行转换,反之亦然。
如果您不关心超精确度,并且您不想通过警报请求他们允许访问其位置来骚扰您的用户,那么您可以使用类似的东西 FreeGeoIP 。我写了一个小jQuery插件,利用它。见 Locaternator 。支持 jsonp 请求也是如此,您可以从任何网站使用它,包括静态HTML仅网站。
jsonp