给定纬度和经度,在 Sencha Touch 中获取位置名称

Posted

技术标签:

【中文标题】给定纬度和经度,在 Sencha Touch 中获取位置名称【英文标题】:Given latitude and longitude, get name of Location in Sencha Touch 【发布时间】:2013-07-06 14:41:02 【问题描述】:

我正在尝试从给定的纬度和经度中获取位置的名称。 有没有可能得到它像

getNameOfLocation(经度、纬度)?

例如 getNameOfLocation(48.1471904942317, 11.591434478759765) --> 结果慕尼黑

我不想像谷歌地图那样使用任何图形元素来显示。

有什么想法吗? 感谢您的帮助

var geo = Ext.create('Ext.util.Geolocation', 
    autoUpdate: false,
    listeners: 
        locationupdate: function(geo) 
            alert('New latitude: ' + geo.getLatitude());
        ,
        locationerror: function(geo, bTimeout, bPermissionDenied, bLocationUnavailable, message) 
            if(bTimeout)
                alert('Timeout occurred.');
             else 
                alert('Error occurred.');
            
        
    
);

geo.updateLocation();

【问题讨论】:

【参考方案1】:

试试这个..

function getNameOfLocation(lat, lng) 
    var geocoder = new google.maps.Geocoder();
    var latlng = new google.maps.LatLng(lat, lng);
    geocoder.geocode(
        'latLng': latlng
    , function(results, status) 
        if (status == google.maps.GeocoderStatus.OK) 
            if (results[1]) 
alert(results[0].formatted_address) // your result              
 //country name
                for (var i=0; i<results[0].address_components.length; i++) 
                    for (var b=0;b<results[0].address_components[i].types.length;b++) 

                        if (results[0].address_components[i].types[b] == "administrative_area_level_1") 
                            city= results[0].address_components[i];
                            break;
                        
                    
                


             else 
                alert("No result");
            
         else 
            alert("failed: " + status);
        
    );

【讨论】:

我需要一个 API 密钥吗? 是的,对于 google api,您有一个 api 密钥...首先转到 code.google.com/apis/console 点击服务并在 Google Maps API v3 上滑动,然后转到 api 访问并创建您的应用程序以生成您的api 键。 因为您不需要 APi Key,所以有可能没有它:***.com/a/12615275/2436861【参考方案2】:

您可以向谷歌地图 API 发送 Ajax 请求。例如:

http://maps.googleapis.com/maps/api/geocode/json?latlng=48.1471904942317,11.591434478759765&sensor=false

然后解析 JSON 结果。

【讨论】:

原生应用也能做到这一点吗?不是基于浏览器的网络应用程序 原生应用是什么意思?你用的是 ExtJS,对吧? 我的应用不是基于网络的。它在我的 android 设备上本地运行,就像来自 Play 商店的任何本机应用程序一样。我使用 Sencha Touch 并将其打包到我的设备上直到现在我不需要 JSON/Ajax 等。有没有可能没有? 如果您的应用程序是使用 sencha touch 开发的 - 它是基于 Web 的,并且如果您有互联网连接,则可以发出 ajax 请求。如果没有请求,您将无法检索有关该位置的信息。

以上是关于给定纬度和经度,在 Sencha Touch 中获取位置名称的主要内容,如果未能解决你的问题,请参考以下文章

使用gps从纬度和经度获取当前位置

Android:如何在给定角度转换纬度和经度?

从给定点和半径计算纬度和经度

给定(纬度,经度)点,距离和方位,如何获得新的经纬度

给定初始纬度 lng,距离和方位角,在 php 中查找纬度经度点

给定 GPS 的地理位置,如何在给定的 x 米半径内找到纬度和经度