`
jacky-zhang
  • 浏览: 316037 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

About Android; Geocoder, “the service is not available”

阅读更多
The documentation states : The Geocoder class requires a backend service that is not included in the core android framework, how/where can I obtain such a service?
It seems It's a bug in the emulator for 2.2 and there is a bug fix about it, for details see http://code.google.com/p/android/issues/detail?id=8816

I have found a workaround to the issue. I used the standard google api: http://code.google.com/apis/maps/documentation/geocoding/

I have created a method that received a String address like "220+victoria+square" and returns a JSONObject with the response of the HTTP Call
public static JSONObject getLocationInfo(String address) {

		HttpGet httpGet = new HttpGet("http://maps.google.
				+ "com/maps/api/geocode/json?address=" + address
				+ "ka&sensor=false");
		HttpClient client = new DefaultHttpClient();
		HttpResponse response;
		StringBuilder stringBuilder = new StringBuilder();

		try {
			response = client.execute(httpGet);
			HttpEntity entity = response.getEntity();
			InputStream stream = entity.getContent();
			int b;
			while ((b = stream.read()) != -1) {
				stringBuilder.append((char) b);
			}
		} catch (ClientProtocolException e) {
		} catch (IOException e) {
		}

		JSONObject jsonObject = new JSONObject();
		try {
			jsonObject = new JSONObject(stringBuilder.toString());
		} catch (JSONException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

		return jsonObject;
	}

After executing this, another method converts that JSONObject into a GeoPoint.
public static GeoPoint getGeoPoint(JSONObject jsonObject) {

		Double lon = new Double(0);
		Double lat = new Double(0);

		try {

			lon = ((JSONArray)jsonObject.get("results")).getJSONObject(0)
				.getJSONObject("geometry").getJSONObject("location")
				.getDouble("lng");

			lat = ((JSONArray)jsonObject.get("results")).getJSONObject(0)
				.getJSONObject("geometry").getJSONObject("location")
				.getDouble("lat");

		} catch (JSONException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

		return new GeoPoint((int) (lat * 1E6), (int) (lon * 1E6));

	}

However this solution is extremely nasty and coupled..
PS. you should add
<uses-library android:name="com.google.android.maps"></uses-library>
to AndroidManifest.xml or application could not find GeoPoint class.
分享到:
评论

相关推荐

    geocoder-service:简单的地理编码器服务,无外部依赖

    此仓库已移动: : 此版本将被存档一段时间。... 确保在构建过程中或直接使用脚本代码包含geocoder-service.js文件。 用法 将geocoderService注入您的控制器并按如下方式使用 $scope . latitude = null ; $scope .

    GeocoderDemo:演示显示Android Geocoder的错误的演示

    演示了如何使用边界框对Android Geocoder进行编码时出现的问题。 AOSP问题-https: id 75575 gmaps-api-issue- id=7142 用法: 运行项目 输入搜索字词(或使用默认字词) 点击“使用边界框运行Geocoder”以...

    Geocoder:android.location.Geocoder 的更丰富且独立于平台的替代方案

    此 Geocoder 具有与 android.location.Geocoder 类似的 API,但它是独立于设备的实现并提供更丰富的 Address 对象。 有关更多详细信息,请参阅示例项目。 最低 API 级别 7 将此添加到 build.gradle 依赖项中,将 ...

    geocoder:这是Android内置的Geocoder的独立于设备且可插拔的替代品

    这是Android内置的Geocoder的独立于设备且可插拔的替代产品。 用于处理地理编码和反向地理编码的类。 地理编码是将街道地址或其他位置描述转换为(纬度,经度)坐标的过程。 反向地理编码是将(纬度,经度)坐标...

    AMap.Geocoder高德地图逆向地理编码(JS代码+对应数据展示前段代码)附带效果图

    楼主实战,根据自身需求加在对应位置即可————————————————强调!强调!强调!,里面代码功能只包含...当点击获取坐标功能按钮,实时获取经纬度传输到文本框,然后通过Geocoder工具进行逆向地理编码。

    java用geocoder相关jar文件

    Java中的Geocoder是一个用于地理编码和反向地理编码的接口,它允许开发人员将地址转换为经纬度坐标或将坐标转换回地址。在Java应用程序中,如果你需要处理与地理位置相关的任务,比如地图显示、导航或者位置服务,...

    Android应用开发详解

    Android中的GPS应用,讲述了LocationManager、LocationProvider、跟踪、定位、Geocoder正逆向编解码和可视化位置服务 第三篇 应用篇 第15章 Android应用案例——移动警务通 Android 应用案例——移动警务通,通过...

    Laravel开发-google-geocoder

    **Laravel 开发与 Google Geocoder** 在 Laravel 框架中进行开发时,有时我们需要集成外部服务,例如 Google 地图的 Geocoding API,来实现地址的解析和地理位置的转换。`google-geocoder` 是一个针对 Laravel 4 和...

    ol-geocoder, OpenLayers的Geocoder Nominatim.zip

    ol-geocoder, OpenLayers的Geocoder Nominatim OpenLayers控制编码器 用于 的编码器扩展。 需要 OpenLayers或者更高。 演示你可以在这里看到演示或者在 jsFiddle,如果你愿意。 还有一个用于创建自定义提供程序插件...

    PlacePicker:使用Geocoder而非Google API的免费Android Map Place Picker替代品

    Google Maps的Place Picker在Android中已被弃用,并告知我们转移到付费API。 多次加载后,“自动完成”,“附近”和“地方”照片API将会收费。 幸运的是,“移动和地理编码器”上的“静态和动态地图”仍然免费。 ...

    Pro Android学习:location小例子

    这是Pro Android学习系列中location部分的例子源代码。相关学习笔记见:http://blog.csdn.net/flowingflying/article/details/6212512

    Laravel开发-geocoder-laravel 地理位置操作工具集(基于Geocoder)

    在本文中,我们将深入探讨`Laravel开发-geocoder-laravel`这个地理位置操作工具集,它是基于Geocoder库的一个扩展,专为Laravel框架设计。这个工具包为开发者提供了便捷的方式来处理与地理位置相关的任务,例如地址...

    Laravel开发-laravel-geocoder

    **Laravel 开发与 Geocoder** 在 Laravel 开发过程中,我们常常需要处理地理位置相关的数据,例如根据IP地址获取用户所在的经纬度,或者根据经纬度反向查询对应的地址。`laravel-geocoder` 是一个专门为 Laravel 5 ...

    Geocoder:一个帮助我们建立地理感知应用程序的php类库.zip

    $geocoder = new Geocoder(); $geocoder-&gt;registerProvider($provider); $results = $geocoder-&gt;geocode('1, Place des Halles, Paris, France'); foreach ($results as $result) { echo $result-&gt;getCoordinates...

    PHP移动定位应用开发库Geocoder.zip

     $adapter, '&lt;MAXMIND_API_KEY&gt;', $service, $useSsl  ),  new \Geocoder\Provider\ArcGISOnline(  $adapter, $sourceCountry, $useSsl  ), ]); $geocoder-&gt;registerProvider(  new \Geocoder\...

    offline_geocoder:离线地理编码器

    geocoder = OfflineGeocoder . new results = geocoder . search ( 51.5214588 , - 0.1729636 ) p results 上面的代码会输出这个: { :lat =&gt; 51.51116 , :lon =&gt; - 0.18426 , :name =&gt; "Bayswater" , :admin1 =&gt;...

    Geocoder:一个帮助我们建立地理感知应用程序的php类库

    在描述中提到,Geocoder提供了抽象层来处理地理编码操作,这意味着它将复杂的地理信息转换过程进行了封装,使得开发者可以更方便地在应用程序中集成这些功能。 Geocoder库主要由两个核心组件构成:HttpAdapter和...

    Wrox.Professional.Android.Application.Development

    This book is for anyone interested in creating applications for the Android mobile phone platform. It includes information that will be valuable whether you're an experienced mobile developer or ...

    AMap.Geocoder高德地图逆向地理编码(JS代码+对应数据展示前段代码)

    楼主实战,根据自身需求加在对应位置即可————————————————强调!强调!强调!,里面代码功能只包含通过获取经纬度坐标查找出对应的地址信息(地址信息=省+市+区+乡镇+具体信息(道路等等);...

Global site tag (gtag.js) - Google Analytics