服务

服务概述

这里所说的地图服务是指可以提供地理信息数据的接口,比如地址匹配服务等。

GeoGlobaAPI提供的服务有:

GeoCodingQuery:地址匹配查询,地址匹配支持地址查经纬度、经纬度查地址功能,支持地址信息的精确和模糊匹配查询;

地址地名匹配查询

GeoCodingQuery提供地址地名查询服务,在使用地址地名匹配查询可通过地址地名查询经纬度,也可通过经纬度查询地址地名。在查询需要为其设置一个检索区域,检索区域可以是一个Geo.Bounds对象(包含top、bottom、left、right四个值),构造函数的第二个参数是查询的地名地址,第三个参数是maxCount,第四个参数是startPosition,第四个参数是successFn(查询成功后的回调函数),第五个参数是failFn(查询失败后执行的回调函数)。

var map = new Geo.View2D.Map("simpleMap");
map.SetCenter(new Geo.LonLat(116.404, 39.915), 11);
var coding = new Geo.Query.GeoCodingQuery("服务地址", {version: "1.1.0"});
coding.addressesToLocations({
		   extent: Geo.Bounds.fromString("-180,-90,180,90"),
		   address: "火车站",
		   resultType: "hits"
		   successFn,
		   failFn});

配置搜索

GeoCodingQuery提供了若干配置方法,通过它们可以自定义搜索服务的行为以满足您的需求。 在下面的示例中,我们调整每页显示8个结果,并且根据结果点位置自动调整地图视野,不显示第一条结果的信息窗口。

var map = new Geo.View2D.Map("simpleMap");
map.SetCenter(new Geo.LonLat(116.404, 39.915), 11);
coding.locationToAddresses({
	lonlat: new Geo.LonLat(),
		tolerance: 100,
		unit: "meter",
		maxCount: 3,
		startPosition: (pageNum - 1) * 3 + 1
		successFn,
		failFn});
									

数据接口

GeoCodingQuery类通过回调函数的方式提供数据接口,通过它们可得到搜索结果的数据信息。 在回调函数的第一个参数中可以获得GeoCodingResult对象实例,它包含了每一次搜索结果的数据信息。 当回调函数被执行时,您可以使用GeoCodingResult.status属性来确认搜索查询结果是否成功或者得到错误的详细状态信息。

在下面这个示例中,通过successFn回调函数得到第一页每条结果的标题和地址信息,并输出到页面上:

var map = new Geo.View2D.Map("simpleMap");
map.SetCenter(new Geo.LonLat(116.404, 39.915), 11);
var coding = new Geo.Query.GeoCodingQuery("服务地址", {version: "1.1.0"});
coding.addressesToLocations({
		   extent: Geo.Bounds.fromString("-180,-90,180,90"),
		   address: "火车站",
		   resultType: "hits"
		   successFn,
		   failFn});
var successFn= function(GeoCodingResult){
	if (GeoCodingResult.status == "NO_RESULTS" || GeoCodingResult.status == "INVALID_REQUEST" || GeoCodingResult.status == "UNKNOWN_ERROR"){
	   alert("没有查询到任何数据!");
	   return;
	};
									var results = GeoCodingResult.results[0].result;
	for (var i = 0; i < results.length; i++) {
									var result = results[i];
		//行政区划的第一级-国家
									var country = result.addressComponent.country;