`
zxl_ong
  • 浏览: 128855 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

Google API应用

阅读更多
获取Location Provider:
android location provider有两个
a、LocationManager.GPS_PROVIDER:
对应权限<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
b、LocationManager.NETWORK_PROVIDER:
对应权限<uses-permissionandroid:name="android.permission.ACCESS_COARSE_LOCATION" />
	private Location getLocationProvider(LocationManager mLocationManager) {
                //该方法可以根据当前设备情况自动选择哪种provider
		Location location = null;
		try {
			Criteria mcriteria = new Criteria();
			mcriteria.setAccuracy(Criteria.ACCURACY_FINE);//设置为最大精度
			mcriteria.setAltitudeRequired(false);//不要求海拔信息
			mcriteria.setBearingRequired(false);//不要求方位信息
			mcriteria.setCostAllowed(true);//是否允许付费
			mcriteria.setPowerRequirement(Criteria.POWER_LOW);//对电量要求
			//mLocationManager.setTestProviderEnabled(LocationManager.GPS_PROVIDER, true);
			strLocationProvider = mLocationManager.getBestProvider(mcriteria, true);
			location = mLocationManager.getLastKnownLocation(strLocationProvider);//获取位置信息
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return location;
	}


注册一个周期性的位置更新:
   locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,  
     1000, 0, locationListener);  

这句代码告诉系统,我们需要从GPS获取位置信息,并且是每隔1000ms更新一次,并且不考虑位置的变化。最后一个参数是LocationListener的一个引用,我们必须要实现这个类。
 private final LocationListener locationListener = new LocationListener() {                                                           
     public void onLocationChanged(Location location) { //当坐标改变时触发此函数,如果Provider传进相同的坐标,它就不会被触发  
         // log it when the location changes  
         if (location != null) {  
             Log.i("SuperMap", "Location changed : Lat: "  
               + location.getLatitude() + " Lng: "  
               + location.getLongitude());  
         }  
     }  
   
     public void onProviderDisabled(String provider) {  
     // Provider被disable时触发此函数,比如GPS被关闭  
     }  
   
     public void onProviderEnabled(String provider) {  
     //  Provider被enable时触发此函数,比如GPS被打开  
     }  
   
     public void onStatusChanged(String provider, int status, Bundle extras) {  
     // Provider的转态在可用、暂时不可用和无服务三个状态直接切换时触发此函数  
     }  
 };  

在成功注册了一个周期性坐标更新以后,我们就随时可以通过下面的方法来取得当前的坐标了。
Location location = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);  


	//根据经纬度获取GeoPoint对象
	private GeoPoint getGeoByLocation(Location location) {
		// TODO Auto-generated method stub
		GeoPoint gp = null;
		try {
			if (location != null) {
				double geolat = location.getLatitude() * 1E6;
				double geolng = location.getLongitude() * 1E6;
				gp = new GeoPoint((int) (geolat), (int) (geolng));
			}
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return gp;
	}


	//根据输入地址获取GeoPoint对象
	private GeoPoint getGeoByAddres(String strSearchAddres) {
		GeoPoint gp = null;

		try {
			if (strSearchAddres != "") {

				Geocoder mGeocoder = new Geocoder(My_Map.this, Locale.getDefault());
				//Geocoder mGeocoder = new Geocoder(My_Map.this, Locale.CHINA);
				Log.i("[My_Map.getGeoByAddress()]", "***strSearchAddres" + strSearchAddres);
				List<Address> lstAddres = mGeocoder.getFromLocationName(
						strSearchAddres, 1);

				if (!lstAddres.isEmpty()) {
					Address adsLocation = lstAddres.get(0);
					double geolat = adsLocation.getLatitude() * 1E6;
					double geolng = adsLocation.getLongitude() * 1E6;
					gp = new GeoPoint((int) (geolat), (int) (geolng));

				}else{
					Log.d(tag, "not found geopoint");
				}
			}

		} catch (Exception e) {
			e.printStackTrace();
		}
		return gp;
	}


	//根据GeoPoint获取地址
	public String getAddresByGeoPoint(GeoPoint gp) {
		String str = "";

		try {
			if (gp != null) {
				Geocoder gc = new Geocoder(My_Map.this, Locale.getDefault());

				double geoLat = (int) gp.getLatitudeE6() / 1E6;
				double geolng = (int) gp.getLongitudeE6() / 1E6;

				List<Address> lstAddress = gc
						.getFromLocation(geoLat, geolng, 1);

				StringBuilder sb = new StringBuilder();
				if (lstAddress.size() > 0) {
					Address adsLocation = lstAddress.get(0);
					for (int i = 0; i < adsLocation.getMaxAddressLineIndex(); i++) {
						sb.append(adsLocation.getAddressLine(i)).append("\n");
					}
					sb.append(adsLocation.getLocality()).append("\n");
					sb.append(adsLocation.getPostalCode()).append("\n");
					sb.append(adsLocation.getCountryName());
				}
				str = sb.toString();
			}
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

		return str;
	}


//设置地图模式
		private void selectViewMode(int mode) {
				switch (mode) {
				case 0://街景模式
					map.setTraffic(false);
					map.setSatellite(false);
					map.setStreetView(true);
					break;
				case 1://交通流量
					map.setSatellite(false);
					map.setStreetView(false);
					map.setTraffic(true);
					break;
				case 2://卫星地图
					map.setStreetView(false);
					map.setTraffic(false);
					map.setSatellite(true);
					break;
				}
		};


	//根据经纬度来刷新地图
	public void refreshMap() {
		GeoPoint p = new GeoPoint((int) (lat * 1E6), (int) (lng * 1E6));
		map.displayZoomControls(true);
		mc.animateTo(p);
		mc.setZoom(intZoomLevel);
	}

分享到:
评论

相关推荐

    Google API的Java示例代码及Jar包

    对于"标签"中的"GoogleAPI",这指的是Google提供的各种服务接口,如Calendar API、Maps API、Gmail API等。每个API都有其特定的功能,例如,Calendar API可以用来创建、修改日历事件,而Maps API则可以实现地图显示...

    谷歌api和英国地址案例

    在IT行业中,谷歌API(Google ...通过学习和实践这个案例,开发者不仅可以掌握谷歌API的使用,还能了解到如何处理具有复杂结构的国际地址,特别是在英国这样的国家,这对开发全球化的应用程序是非常有价值的。

    百度,谷歌,天气预报API应用实例

    在IT行业中,API(应用程序接口)是软件系统之间交互的核心工具。...在实际开发中,不断学习和实践是提高API应用能力的关键。如果你在使用过程中遇到问题,可以通过邮件tootwo.love@163.com联系,共同探讨解决方案。

    Google Custom Search API应用实例

    Google Custom Search API是谷歌提供的一项服务,允许开发者自定义搜索引擎并集成到自己的网站或应用程序中。这个API使得用户可以搜索特定领域内的信息,而不仅仅是整个互联网。本实例将重点介绍如何使用C#语言来...

    最新谷歌离线版API(修改了谷歌禁用本地API功能)

    【谷歌离线版API详解】 谷歌离线版API是指能够在没有网络连接的情况下使用谷歌地图服务的接口。在互联网不畅或者需要节省数据流量的场景下,这种API具有很高的实用价值。传统的在线API依赖于实时的网络连接来获取...

    googleAPI完整版下载

    通过这个“googleAPI完整版下载”,你可以获得全面的开发指南,学习如何集成和使用这些API,从而开发出具有专业地图功能的应用。记得阅读官方文档,了解最新的更新和最佳实践,以便充分利用谷歌地图API的强大功能。

    基于android的google map API应用设计

    在基于Android的Google Map API应用设计中,开发者可以利用谷歌提供的API来构建一系列与地理位置相关的功能,极大地丰富了移动应用程序的用户体验。以下是基于这个主题的一些关键知识点: 1. **Android平台**:...

    谷歌地图Google Map API V3中文开发文档

    谷歌地图 Google Map API V3 中文开发文档是 Google 公司提供的一种基于 Web 的地图应用程序接口,允许开发者在自己的网站或应用程序中嵌入谷歌地图,以提供地图检索、路线规划、地标显示等功能。本文档旨在为开发者...

    google地图API实现的一个简单demo

    谷歌地图API是一个强大的工具,它允许开发者在网页或应用程序中集成地图功能,提供导航、定位、地理编码、标记、信息窗口等丰富的地图交互体验。在这个"google地图API实现的一个简单demo"中,我们将探讨如何使用谷歌...

    google地图api文档

    Google 地图 API 是一款功能强大且广泛应用的 Web 服务,允许开发者在自己的网站中嵌入 Google 地图,添加丰富的功能和交互性,提供更好的用户体验。下面是 Google 地图 API 的基础知识点和重要概念: 1. Google ...

    Google Maps API编程资源大全

    Google Maps API是Google提供的一项强大的服务,允许开发者在自己的应用程序中集成地图功能,进行地理位置相关的开发。这个"Google Maps API编程资源大全"包含了丰富的资料,帮助开发者深入理解和使用这一技术。 ...

    谷歌拼音输入法api

    谷歌拼音输入法API是谷歌为开发者提供的一种工具,允许他们集成谷歌拼音输入法的功能到自己的应用程序或网站中,提升用户在输入中文时的体验。这个API不仅提供了基本的拼音输入功能,还可能包括智能纠错、词语联想、...

    delphi调用GOOGLE API

    在IT行业中,开发人员经常需要调用各种API来扩展应用程序的功能。...总的来说,Delphi调用谷歌API涉及到网络请求、参数构建、API密钥管理等多个环节,理解这些概念和技术对开发整合地图功能的应用至关重要。

    Google地图GISAPI应用实例

    在本文中,我们将深入探讨"Google地图GIS API应用实例",这是基于Google Map平台的地理信息系统(GIS)开发的一个典型案例。对于初学者来说,这是一个很好的起点,能够帮助他们理解和掌握如何利用Google Maps API来...

    googleapi的jar文件

    例如,如果你想在你的应用中集成Google Maps功能,你可能需要下载并导入一个包含Google Maps API的JAR文件。这个文件中包含了地图显示、定位、路线规划等相关的类和接口。 在使用Google API的JAR文件时,通常需要...

    android写的google map api 应用

    在Android平台上,Google Maps API是开发地图应用的重要工具,它允许开发者将强大的地图功能集成到自己的应用程序中。本文将深入探讨如何使用Android和Google Maps API创建一个完整的地图应用。 首先,要使用Google...

    jdk api _googleAPI

    这些API允许开发者将Google的功能集成到自己的应用中,实现如地理位置服务、数据存储、搜索结果嵌入等功能。例如,Google Maps JavaScript API可以让开发者在网页上嵌入交互式地图,而Google Cloud Storage API则...

    简单的google map api应用(数据库)

    在本项目中,“简单的google map api应用(数据库)”展示了如何结合Google Maps API与数据库技术来实现一个实时的、基于输入查询的地理位置搜索功能。这个功能通常被称为“即敲即得搜索”,允许用户输入关键词后...

Global site tag (gtag.js) - Google Analytics