所以我创建了一个访问用户位置的应用程序,然后使用Geocoder解释(反向地理编码),如下所示:
Geocoder gc = new Geocoder(ctx, Locale.getDefault());
List<Address> addresses = gc.getFromLocation(latitude, longitude, maxResults);
Address address = addresses.get(0);
town = address.getLocality();
countryCd = address.getCountryCode();
Run Code Online (Sandbox Code Playgroud)
但是我发现地理编码器服务真的不可靠,IOException和服务经常不可用.
我已经阅读了涉及垃圾邮件Geocoder服务的解决方案,直到它给出了结果,而其他人说这项服务每15秒只允许一次IP地址添加.
有时重启我的设备会使服务再次可用.
是否有其他API或方法来处理这个问题?
我正在尝试使用onMapLongClickListener(LatLng点)在Google地图上获取点击的地址,使用点的lat和lng并使用Geocoder在地址中转换它们.如果我连接到Internet,它可以正常工作但如果我不是应用程序崩溃,因为getFromLocation方法给出null结果.所以我认为Geocoder类只能在连接启用的情况下工作.就是这样吗?有没有办法让地址保持离线状态?
那是方法的代码:
public void onMapLongClick(LatLng point) {
List<Address> addresses = null;
try {
addresses = geocoder.getFromLocation(point.latitude, point.longitude, 1);
} catch (IOException e) {
e.printStackTrace();
}
String address = addresses.get(0).getAddressLine(0);
String city = addresses.get(0).getAddressLine(1);
String country = addresses.get(0).getAddressLine(2);
String str = address + ", " + city + ", " + country;
gMap.addMarker(new MarkerOptions()
.position(point)
.title("Clicked Point")
.draggable(false)
.snippet(address + ", " + city + ", " + country));
Vibrator v = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
v.vibrate(50);
}
Run Code Online (Sandbox Code Playgroud)
这些是权限:
<uses-permission android:name="com.example.mappine.permission.MAPS_RECEIVE" />
<uses-permission …Run Code Online (Sandbox Code Playgroud) 对于我的大部分应用程序,我从Geocoder获取城镇/城市的纬度,经度,邮政编码等.我刚刚进入城市和州,作为回报,我得到了
我在一个场地,我有一个场地.那个场地需要一个地址,我从另一个来源获得那个场地的纬度和经度.使用Geocoder gem,我能通过给它一个纬度和经度来获得一个地址吗?
我在以色列的Android设备上使用Geocoder.直到几个星期前一切正常,当我进行反向地理编码时,所有地址都以希伯来语收到.但在某些时候,我开始在阿拉伯语中获得相同的地址.
这是一个运行的示例代码(lat/lon在特拉维夫):
Geocoder geocoder = new Geocoder(mContext, Locale.getDefault());
List<Address> addresses = geocoder.getFromLocation(32.087765863162346, 34.781454205513, 1);
Run Code Online (Sandbox Code Playgroud)
当我检查'地址'时,我得到以下打印输出:
[地址[addressLines = [0:"عمنوئيلهرومي26",1:"Tel Aviv",2:"Israel"],feature = 26,admin = null,sub-admin = null,locality = Tel Aviv,thoroughfare =عمنوئيل هرومي,POSTALCODE = NULL,COUNTRYCODE = IL,国家名称=以色列,hasLatitude = TRUE,纬度= 32.0877767,hasLongitude = TRUE,经度= 34.7813859,手机= NULL,URL = NULL,演员= NULL]
请注意,这些设备未定位到以色列.意思是,Locale.getDefault()将"US"和"en"作为国家和语言代码.
我已经在地理编码器问题跟踪器中打开了一个错误 - http://code.google.com/p/gmaps-api-issues/issues/detail?id=6182 - 但是它被引用到了Android问题跟踪器.在那边打开另一个 - https://code.google.com/p/android/issues/detail?id=64382 - 但似乎这个bug甚至不在Android设备端,而是在Geocoder后端服务中.所以我走到了尽头.
如果知道任何知道谷歌负责团队成员的人会让他们知道,我会很感激.谢谢.
编辑:因为我觉得这里发布的问题并不完全形成为问题不是很受欢迎,让我重新说一下 - 有没有人知道问题跟踪器哪里有可能打开关于android Geocoder后端服务的问题?再次,谢谢.
我正在使用Geocoder从lan/lat坐标获取地址.问题是地址是用当地语言(通常是街道名称).如何将其设置为仅使用英语?
我在用:
Geocoder geocoder = new Geocoder(Context, Locale.getDefault());
Run Code Online (Sandbox Code Playgroud)
尝试:
Geocoder geocoder = new Geocoder(Context, Locale.ENGLISH);
Geocoder geocoder = new Geocoder(Context, Locale.US);
Run Code Online (Sandbox Code Playgroud)
没有运气.
我想用搜索输入构建一个地图.用户应该能够使用该输入搜索zip或城市.Google Geocoding API或Geocoder的Javascript API参考中似乎没有详细记录.
我尝试使用地理编码功能如下:
geocode({ address: inputValue })
Run Code Online (Sandbox Code Playgroud)
但这将在全世界取得成果.
然后我使用了区域和边界:
geocode({ address: this.value, region: 'XX', bounds: myCountryBounds })
Run Code Online (Sandbox Code Playgroud)
这仍然会给整个世界带来结果.(我读的文档页面的之一region,并bounds是唯一的信息,而不是严格限制的,但我不能再找到该网页.)
然后我只用了componentRestrictions:
geocode({ address: this.value, componentRestrictions: { country: 'XX' })
Run Code Online (Sandbox Code Playgroud)
这现在只给我国家的结果XX.但它也给了我街道和公司的名字.
现在我希望搜索只匹配拉链和城市.因为如果我搜索,2000我会找到许多名字中的公司2000名称.那么如何确保搜索仅在拉链和城市名称中执行?
您好我是深化发展的Android应用程序中,我需要用户通过mouving帕克选择一个位置,以便我能得到我需要的信息完全一样,但在Android应用程序.我做了一些研究,但我还是新的,所以我找不到任何接近这个的东西.有人能指出我正确的方向吗?
我需要做的是在一个简单的谷歌地图中创建一个mouving光标,可以给我长+纬度数据.我所做的就是在我的地图中放置一些静态位置.
我知道我们需要使用唯一的API密钥来访问Google地理编码API.我在我的应用程序中使用Rails Geocoder Gem并发现它使用了Google地理编码API.我无法找到任何定义用于访问Google API的API密钥.Geocoder gem如何访问Google API.
ruby ruby-on-rails google-api google-geocoder rails-geocoder
鉴于移动设备在短时间内的实时位置数据,如何在这条道路上进一步获得一对/一对,比如2英里,甚至更好,5分钟的驾驶?
我看到我可以使用谷歌的Roads API来搭配一对长途对话https://developers.google.com/maps/documentation/roads/snap,但这只会让我分道扬..
这将是一个Android应用程序.
android google-geocoder google-geocoding-api google-roads-api android-gps
google-geocoder ×10
android ×7
google-maps ×4
google-api ×3
ruby ×2
android-gps ×1
geocoding ×1
geolocation ×1
javascript ×1