我想在Google地图中显示地址的位置.
如何使用Google Maps API获取地址的纬度和经度?
我基本上想要在邮政编码中检索城市和州的列表.Google的Geocode API是否有能力这样做?我已经尝试查看文档,但发现信息压倒性.
任何帮助,将不胜感激.如果还有其他方法可以完成此类任务,请告诉我.
谢谢
编辑:我能够通过以下网址检索城市和州:http://maps.google.com/maps/geo?output = xml&q = 14606但是对此有限制吗?
我对地理编码器有一点问题是从地址获取纬度和纬度:
这是我的代码:
for (Garage g : XMLGarage) {
List<Address> address;
address = coder.getFromLocationName(
g.getAddress(), 5);
if (address != null) {
Address location = address.get(0);
g.setLatitude(location.getLatitude());
g.setLongitude(location.getLongitude());
...
Run Code Online (Sandbox Code Playgroud)
错误是:
08-18 14:28:56.026: WARN/System.err(359): java.io.IOException: Service not Available
08-18 14:28:56.026: WARN/System.err(359): at
android.location.Geocoder.getFromLocationName(Geocoder.java:178)
08-18 14:28:56.026: WARN/System.err(359): at
com.amt.android.garage.Garage.postData(Garage.java:269)
08-18 14:28:56.026: WARN/System.err(359): at
com.amt.android.garage.GarageForm$2.onClick(GarageForm.java:86)
08-18 14:28:56.026: WARN/System.err(359): at
android.view.View.performClick(View.java:2485)
08-18 14:28:56.026: WARN/System.err(359): at
android.view.View$PerformClick.run(View.java:9080)
08-18 14:28:56.036: WARN/System.err(359): at
android.os.Handler.handleCallback(Handler.java:587)
08-18 14:28:56.036: WARN/System.err(359): at
android.os.Handler.dispatchMessage(Handler.java:92)
08-18 14:28:56.036: WARN/System.err(359): at
android.os.Looper.loop(Looper.java:130)
08-18 14:28:56.036: WARN/System.err(359): at
android.app.ActivityThread.main(ActivityThread.java:3683) …Run Code Online (Sandbox Code Playgroud) 我从我的应用程序访问谷歌地图时遇到问题,当我从java脚本循环发送超过10个请求时,我从地理编码服务获得OVER_QUERY_LIMIT异常.有没有办法,我可以摆脱这个,我尝试使用setInterval()等给一些时间延迟..但不起作用.
当我使用call getFromLocationName时,我得到一个IOException,其描述为"grpc failed".
运行的代码
@Override
public void onMapReady(GoogleMap googleMap) {
mMap = googleMap;
try {
Geocoder geocoder = new Geocoder(getApplicationContext(), Locale.getDefault());
List<Address> listAdresses = geocoder.getFromLocationName("London", 10);
Log.i("PlaceInfo", listAdresses.get(0).toString());
} catch (IOException e) {
e.printStackTrace();
}
}
Run Code Online (Sandbox Code Playgroud)
控制台输出错误:
07-10 12:01:38.781 13712-13712/co.siqve.maplocationdemo W/System.err: java.io.IOException: grpc failed
07-10 12:01:38.781 13712-13712/co.siqve.maplocationdemo W/System.err: at android.location.Geocoder.getFromLocationName(Geocoder.java:178)
07-10 12:01:38.781 13712-13712/co.siqve.maplocationdemo W/System.err: at co.siqve.maplocationdemo.MapsActivity.onMapReady(MapsActivity.java:70)
07-10 12:01:38.781 13712-13712/co.siqve.maplocationdemo W/System.err: at com.google.android.gms.maps.zzaj.zza(Unknown Source)
07-10 12:01:38.781 13712-13712/co.siqve.maplocationdemo W/System.err: at com.google.android.gms.maps.internal.zzaq.onTransact(Unknown Source)
07-10 12:01:38.781 13712-13712/co.siqve.maplocationdemo W/System.err: at android.os.Binder.transact(Binder.java:499)
07-10 12:01:38.781 13712-13712/co.siqve.maplocationdemo W/System.err: …Run Code Online (Sandbox Code Playgroud) 该应用程序使用Geocoder对象.它在我的股票Froyo Nexus One上运行良好.但后来我在不同的设备上运行完全相同的应用程序(Advent Vega 10"平板电脑也运行Froyo),我得到了这个例外:服务不可用.我正在使用的方法是getFromLocationName(),我正在建立对抗Android 1.6 Google API.
我知道在模拟器上抛出此异常的问题,但我怀疑这是不同的.为什么会在运行Froyo的设备上抛出它而不是另一台设备呢?
该应用程序是一个位置应用程序,由于平板电脑没有GPS或移动网络,在Wi-Fi连接不提供位置的情况下,用户必须手动指定它,因此无法使用Geocoder对象是坏消息.
我可以为用户添加一种在地图上选择位置的方法,但这并不理想.可能我可以直接使用谷歌地图API,但我希望首先了解问题的本质,因为有一个更简单的解决方案会很好.
希望在未来版本中,Android将包含非Geocoder设备的操作系统级"默认位置",因此位置感知应用程序可在Google TV等设备上开箱即用.
我知道有时google后端服务可能无法使用.
因此,解决方案可能是循环,直到我获得数据.
private class getLocationDetails extends AsyncTask<String, Void, String> {
@Override
protected String doInBackground(String... params) {
Log.d("looping", "" + count + "");
count++;
double lat = Double.parseDouble(params[0]);
double lng = Double.parseDouble(params[1]);
List<Address> addresses = null;
try {
Geocoder gCoder = new Geocoder(ImageAndLocationActivity.this,
Locale.getDefault());
addresses = gCoder.getFromLocation(lat, lng, 1);
Address addr = addresses.get(0);
user_country = addr.getCountryName();
user_city = addr.getLocality();
user_district = addr.getSubAdminArea();
if (user_city == null) {
user_city = user_district;
}
} catch (Exception e) {
Log.e("Exception in getLocationDetails - ", …Run Code Online (Sandbox Code Playgroud) 我有一个Android应用程序推出市场超过6个月, geocoder.getFromLocation()用于"翻译" latitude和longitude人类可读的地址:
Geocoder geocoder = new Geocoder(this, Locale.getDefault());
List<Address> addresses = geocoder.getFromLocation(latitude, longitude, 1);
Run Code Online (Sandbox Code Playgroud)
一切都很好,直到7小时前(2016-01-15 04:00 UTC).使用Google支持并根据他们的建议,在此处发布问题,看看是否有人有任何想法来解决此问题.
我已经与Maps API的工程团队进行了交谈,似乎Android Geocoder使用的是与我们支持的Geocoding API不同的后端,因此我们现在无法做多少.
此外...
这个问题已经在SO的几个地方被问过了,但是我发现答案要么有点矛盾,要么"瘦"......所以我不确定再问一次是否会有所帮助,但是这里有.
谷歌"帮助"页面说谷歌团队在SO上保持"存在",所以如果你是谷歌家伙,请你明白这一点,如果你不喜欢也请说清楚,谢谢:)
那么,我想做什么......用户搜索一组位置.这些将用于形成旅行行程.我想取lat/lng和地址组件并将它们存储在我自己的数据库中,以便当另一个人在一些国家/地区,某些地方等使用搜索旅行时,我可以去寻找它们.
最大的问题是,条件条件是否允许这样做?让我担心的相关问题是......
10.1.3数据导出或复制的限制.
......剪...
(b)没有预先获取,缓存或存储内容.您不得预先获取,缓存或存储任何内容,但您可以存储以下内容:(i)有限数量的内容,以便在您暂时 (以下情况下)暂时提高Maps API实施的效果时超过30个日历日),...剪切...例如,您不得使用内容创建"地点"或其他本地列表信息的独立数据库.
我想做的事情会违反这一点.它听起来像我可能,但随后提出了问题,为什么我会使用谷歌地图这种应用程序?其他旅游网站似乎?!
我正在使用google geocode api使用新加坡的邮政编码来获取lat
我试过以下来获取数据:
(1)http://maps.googleapis.com/maps/api/geocode/json?address=505468&sensor=false
(2)http://maps.googleapis.com/maps/api/geocode/json?address=Singapore%20505468&sensor=false
(3)http://maps.googleapis.com/maps/api/geocode/json?address=Singapore%20505468&sensor=false®ion=sg
但它从印度返回位置
https://developers.google.com/maps/documentation/geocoding/?hl=fr#RegionCodes
任何其他方式只获得特定国家(新加坡)的结果.
我试过跟着它返回正确的结果
http://maps.googleapis.com/maps/api/geocode/json?address=Singapore%20133224&sensor=false