`
ze_nana
  • 浏览: 52276 次
社区版块
存档分类
最新评论

定位(5):代替Geocoder

 
阅读更多

https://developers.google.com/maps/documentation/geocoding/

 

Geocoding Requests

A Geocoding API request must be of the following form:

http://maps.googleapis.com/maps/api/geocode/output?parameters

where output may be either of the following values:

  • json (recommended) indicates output in JavaScript Object Notation (JSON)
  • xml indicates output as XML

To access the Geocoding API over HTTPS, use:

https://maps.googleapis.com/maps/api/geocode/output?parameters

HTTPS is recommended for applications that include sensitive user data, such as a user's location, in requests.

In either case, certain parameters are required while some are optional. As is standard in URLs, all parameters are separated using the ampersand (&) character. The list of parameters and their possible values are enumerated below.

Required parameters

  • address — The address that you want to geocode.
         or
    latlng — The textual latitude/longitude value for which you wish to obtain the closest, human-readable address. See Reverse Geocoding for more information.
         or
    components — A component filter for which you wish to obtain a geocode. See Component Filtering for more information. The components filter will also be accepted as an optional parameter if an address is provided.
  • sensor — Indicates whether or not the geocoding request comes from a device with a location sensor. This value must be either true or false.

Maps API for Business users must include valid client and signature parameters with their Geocoding requests. Please refer to Maps API for Business Web Services for more information.

Optional parameters

  • bounds — The bounding box of the viewport within which to bias geocode results more prominently. This parameter will only influence, not fully restrict, results from the geocoder. (For more information see Viewport Biasing below.)
  • language — The language in which to return results. See the list of supported domain languages. Note that we often update supported languages so this list may not be exhaustive. If language is not supplied, the geocoder will attempt to use the native language of the domain from which the request is sent wherever possible.
  • region — The region code, specified as a ccTLD ("top-level domain") two-character value. This parameter will only influence, not fully restrict, results from the geocoder. (For more information see Region Biasing below.)
  • components — The component filters, separated by a pipe (|). Each component filter consists of a component:value pair and will fully restrict the results from the geocoder. For more information see Component Filtering, below.

输入:https://maps.googleapis.com/maps/api/geocode/xml?address=SFO&sensor=false

sensor=false传感器设置

查询出旧金山地址(xml格式):



 

输入:https://maps.googleapis.com/maps/api/geocode/jsonlatlng=113.298227,23.135032&sensor=false

 

查询吃该经纬度的地址(json格式):会自动下载一个json文件



 

bounds的作用:在指定的经纬度范围内查询
http://maps.google.com/maps/api/geocode/json?address=SFO&bounds=39.125367,118.326182|42.271635,-40.287321&sensor=false

 

region的作用:在给定国家代码的国家中查询(es:西班牙的简写)
http://maps.google.com/maps/api/geocode/json?address=Toledo&sensor=false&region=es

 

 

Geocoding的返回值:

红色的地方式数组:


 

 



 
 

 

如何使用Gson库解析出要用的东西:

 

Gson 是 Google 提供的用来在 Java 对象和 JSON 数据之间进行映射的 Java 类库。可以将一个 JSON 字符串转成一个 Java 对象,或者反过来。

示例代码:

Gson gson = new Gson();
int[] ints = {1, 2, 3, 4, 5};
String[] strings = {"abc", "def", "ghi"};

(Serialization)
gson.toJson(ints);     ==> prints [1,2,3,4,5]
gson.toJson(strings);  ==> prints ["abc", "def", "ghi"]

 

testResult.java根据得到的json文件设计:

取得数组还是字符串:

package com.se7en;

import java.util.List;

public class TestResult {
	private String status;
	private List<Result> results;
	public String getStatus() {
		return status;
	}
	public void setStatus(String status) {
		this.status = status;
	}
	public List<Result> getResults() {
		return results;
	}
	public void setResults(List<Result> results) {
		this.results = results;
	}
	
	public String toString (){
		return "TestResult[results: "+results+"; status:"+status+"]";
	}
	
}

 

注: 

当BufferedReader在读取文本文件时,会先尽量从文件中读入字符数据并置入缓冲区,而之后若使用read()方法,会先从缓冲区中进行读取。如果缓冲区数据不足,才会再从文件中读取,使用BufferedWriter时,写入的数据并不会先输出到目的地,而是先存储至缓冲区中。如果缓冲区中的数据满了,才会一次对目的地进行写出。

 

public interface HttpEntity

 

An entity that can be sent or received with an HTTP message. Entities can be found in some requests and in responses, where they are optional.

 

getContent()
          Returns a content stream of the entity.

 

 

public class MainActivity extends Activity {
	private Button geocodingButton = null;
	
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        geocodingButton = (Button)findViewById(R.id.geoButton);
        geocodingButton.setOnClickListener(new OnClickListener(){

			@Override
			public void onClick(View arg0) {
				//针对上一节中Geocoder服务不可用的情况,此处使用google maps中的服务替代
				String url = "http://maps.google.com/maps/api/geocode/json?address=SFO&sensor=false";
				//创建一个默认的HttpClient对象,向指定的url发送http请求
				HttpClient client = new DefaultHttpClient();
				String resonseData = "";
				try {
					//创建一个GET请求向指定的url发送http请求并将响应内容转换成字符串
					HttpResponse response = client.execute(new HttpGet(url));
					//取得服务器返回的响应
					HttpEntity entity = response.getEntity();
					BufferedReader br = new BufferedReader(new InputStreamReader(entity.getContent()));
					String line = "";
					while((line =br.readLine() ) != null){
						resonseData = resonseData + line;
					}
				} catch (ClientProtocolException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
				Gson gson = new Gson();
				//
				TestResult testResult = gson.fromJson(resonseData,TestResult.class);
				System.out.println(resonseData);
				System.out.println(testResult);
				
			}
        	
        });
    }
    

  

分享到:
评论

相关推荐

    heregeocoder:HERE Geocoder介面

    这里的Geocoder介面这是一个Python模块,将实现与Here Geocoder一起使用的两个基本功能: 通过X / Y坐标对获取正式地址通过地址字符串获取坐标对这里的Geocoder API密钥有效的Here Geocoder API密钥是操作...

    tiger-geocoder:TIGER Geocoder的Ansible角色

    PostGIS TIGER Geocoder的角色 Ansible角色,使用TIGER Geocoder扩展的PostGIS配置PostgreSQL实例。 要求和依存关系 在Ansible 1.7.2上测试 Ubuntu 14.04 PostgreSQL 9.3.6 PostGIS 2.1 2013年的postgis_tiger_...

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

    Geocoder 是 PHP 开发库,帮助你构建移动定位应用,提供一个强大的地理编码操作的抽象层。&lt;?php $geocoder = new \Geocoder\ProviderAggregator(); $geocoder-&gt;registerProviders([  new \Geocoder\...

    motion-geocoder:Rubymotion Geocoder包装器!

    用于RubyMotion的Geocoder API 这款RubyMotion宝石提供了Geocoder功能,该功能将和集成到了RubyMotion应用程序中。 谷歌 地理编码API 地方API 苹果 CLGeocoder MKLocalSearch 设置 将MotionGeocoder添加到您的...

    yandex-geocoder-client:Yandex Geocoder HTTP的Java客户端

    5. **简单易用的 API**:`yandex-geocoder-client` 提供了简洁的 Java 接口,使得开发者能够快速上手并集成到自己的项目中。例如,只需几行代码就能完成一次地理编码或反地理编码请求。 6. **请求参数配置**:允许...

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

    PlacePicker是一个Place Picker替代库,可让您在地图中选择一个点并使用Geocoder而不是Google API来获取其坐标和地址 将PlacePicker添加到您的项目 在应用程序的build.gradle中包括以下依赖项: dependencies { ...

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

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

    api:Pelias Geocoder的HTTP API

    适用于我们世界的模块化,开源搜索引擎。 Pelias是完全由开放数据提供动力的地理编码器,每个人都可以免费使用。 ···什么是Pelias? Pelias是一个由开放数据提供支持的全球各地搜索引擎。 它将地址和地名转换为...

    ruby-opencage-geocoder:OpenCage地理编码API的Ruby客户端

    OpenCage地理编码器 地理编码API的Ruby...geocoder = OpenCage :: Geocoder . new ( api_key : 'your-api-key-here' ) 对地址或地名进行地理编码 results = geocoder . geocode ( '82 Clerkenwell Road, London' )

    Geocoder:Google Maps Geocoder工具

    **Geocoder: Google Maps Geocoder 工具** Google Maps Geocoder 是一个强大的API,它允许开发者将人类可读的地址转换为地理位置坐标,通常是指经纬度。这个工具在JavaScript环境中尤其有用,因为它可以让Web应用...

    FCIPAddressGeocoder:iOS Geocoder,用于使用GeoIP服务和基于块的语法对设备IP地址进行地址解析

    iOS Geocoder,用于使用GeoIP服务和基于块的语法对设备IP地址进行地址解析。 支援服务 - (此服务不再免费,您可以启动自己的实例或订阅付费计划) (随时建议其他支持服务) 要求和依存关系 iOS&gt; = 5.0 启用...

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

    这个工具能够帮助开发者构建具有地理感知功能的应用程序,比如地图应用、定位服务或者基于位置的推荐系统。在描述中提到,Geocoder提供了抽象层来处理地理编码操作,这意味着它将复杂的地理信息转换过程进行了封装,...

    FCCurrentLocationGeocoder:iOS Geocoder,用于使用基于块的语法进行正向地理编码和反向地理编码用户的当前位置

    FCCurrentLocationGeocoder 位于LocationManager和CLGeocoder之上的iOS Geocoder使用基于块的语法对用户的当前位置进行正向地理编码和反向地理编码。 它也可以用于对用户的大概位置(总是国家,几乎总是城市)进行...

    Geocoder:用PHP编写的功能最强大的Geocoder库

    地理编码器 重要提示:您正在浏览Geocoder 4.x的文档。 对于3.x版本的文档可以在这里找到:。 有关版本2.x的文档,请点击此处: 。 Geocoder是一个PHP库,可通过为地理编码操作提供强大的抽象层来帮助您构建地理感知...

    Laravel开发-google-geocoder

    `google-geocoder` 是一个针对 Laravel 4 和 5 以及 Slim 3 的轻量级包装器,它简化了对 Google 地理编码 API v3 的调用,使得开发者能够快速高效地在应用中利用这个功能。 Google Geocoding API 是 Google Maps ...

    meteor-geocoder:通过node-geocoder包轻松进行地址解析

    获取一个新的GeoCoder实例,然后在其上调用geocode方法,并传入地址字符串: server.js: var geo = new GeoCoder ( ) ;var result = geo . geocode ( '29 champs elysée paris' ) ; 请注意,与节点包不同, ...

    flutter_geocoder:Flutter插件,用于正向和反向地理编码

    导入package:geocoder/geocoder.dart ,然后使用Geocoder.local来访问设备系统提供的地理编码服务。 例子: import 'package:geocoder/geocoder.dart' ; // From a query final query = "1600 Amphiteatre Parkway...

    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...

    Laravel开发-laravel-geocoder

    `laravel-geocoder` 是一个专门为 Laravel 5 设计的包,它简化了地理编码和反向地理编码的过程,让你能够轻松地集成地理定位功能到你的 Laravel 应用中。 **一、安装与配置** 1. **Composer 安装** 首先,你需要...

    java用geocoder相关jar文件

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

Global site tag (gtag.js) - Google Analytics