`

android中google“定位查询”

阅读更多
“定位查询”locate()方法,增加一个线程,在该线程中处理查询地点的功能,请参考代码清单16-10,完整代码请参考chapter16_7工程中src/com/work/map/MyMapActivity.java文件locate()方法代码部分。
【代码清单16-10】
/**
	 * 定位查询
	 */
	private void locate() {

		LayoutInflater factory = LayoutInflater.from(MyMapActivity.this);
		View locationView = factory.inflate(R.layout.find_dialog, null);
		final EditText findText = (EditText) locationView
				.findViewById(R.id.dailog_find);
		new AlertDialog.Builder(this).setTitle(R.string.dialog_find).setView(
				locationView).setPositiveButton(R.string.button_ok,
				new DialogInterface.OnClickListener() {
					public void onClick(DialogInterface dialog, int whichButton) {
						findString = findText.getText().toString();
						progDialog = ProgressDialog.show(MyMapActivity.this,
								"处理中...", "定位" + findString, true, false);
						new Thread() {
							@Override
							public void run() {
								try {
									Geocoder geocoder = new Geocoder(
											MyMapActivity.this);
									addresses = geocoder.getFromLocationName(
											findString, 1);

									if (addresses.size() > 0) {
								List<OverlayItem> overlayitems = new ArrayList<OverlayItem>();
										double lat = addresses.get(0)
												.getLatitude();
										double lng = addresses.get(0)
												.getLongitude();
										// 设定中心点
										centerPoit = new GeoPoint(
												(int) (lat * 1E6),
												(int) (lng * 1E6)); // 地理坐标
										mc.setCenter(centerPoit);
										Log.i(TAG, " lat " + lat + "  lng "
												+ lng);
										int intMaxAddressLineIndex = addresses
												.get(0)
												.getMaxAddressLineIndex();
										String address = "地址:";
										for (int j = 0; j <= intMaxAddressLineIndex; j++) {
											if (addresses.get(0) == null)
												continue;
											address += addresses.get(0)
													.getAddressLine(j)
													+ ",";
										}
										if (address.endsWith(",")) {
											address = address.substring(0,
													address.length() - 1);
										}
										String title = "";
										if (addresses.get(0).getFeatureName() == null) {
											title = "";
										} else {
											title = addresses.get(0)
													.getFeatureName();
										}
										overlayitems.add(new OverlayItem(
												centerPoit, title, address));

										Drawable marker = getResources()
												.getDrawable(
														R.drawable.markermap2);
										locs = new LocationItemsOverlay(marker,
												overlayitems);

										handler.sendEmptyMessage(0);
									} else {
										handler.sendEmptyMessage(1);
									}
								} catch (Exception e) {
									e.printStackTrace();
									handler.sendEmptyMessage(1);
								}
							}

						}.start();
					}
				}).setNegativeButton(R.string.button_cancel,
				new DialogInterface.OnClickListener() {

					public void onClick(DialogInterface dialog, int which) {
					}

				}).show();
	}

通过下面的代码是实现显示进度条:
progDialog = ProgressDialog.show(MyMapActivity.this,  "处理中...", "定位" + findString, true, false);
启动一个子线程,在该线程中实现地点查询,但是不能有更新UI的处理,如果查询成功调用handler.sendEmptyMessage(0),如果失败调用handler.sendEmptyMessage(1)。
new Thread() {
@Override
public void run() {
… …
}
}.start();
在Hander的handleMessage方法中处理更新UI操作,其中成功(case 0)时候清除屏幕上原来的图层,重新添加图层,最后progDialog.dismiss()方法关闭进度条对话框。如果是查询失败(case 1)弹出Toast说明一下,也要通过progDialog.dismiss()方法关闭进度条对话框,否则进度条对话框不会关闭。
	private Handler handler = new Handler() {

		@Override
		public void handleMessage(Message msg) {
			switch (msg.what) {
			case 0:
				mapView.getOverlays().clear();
				mapView.getOverlays().add(locs);
				progDialog.dismiss();
				break;
			case 1:
				Toast.makeText(MyMapActivity.this, "暂时无法" + findString + "信息。",
						Toast.LENGTH_SHORT).show();
				progDialog.dismiss();
			}
		}
	};


                                          出自《Android开发案例驱动教程》第十六章
分享到:
评论

相关推荐

    Android地图定位googleSDK使用

    在Android开发中,集成Google Maps SDK和Google Location SDK是实现地图展示、定位功能的重要环节。本文将详细讲解如何使用这两个SDK来实现相应的功能,并提供一些关键知识点。 首先,我们需要在项目中添加Google ...

    android google 地图定位 demo

    首先,我们需要在Android项目中引入Google Play服务库,因为Google地图和定位功能都是通过这个库提供的。在`build.gradle`(Module)文件中添加以下依赖: ```groovy dependencies { implementation '...

    android谷歌定位

    在Android平台上,谷歌定位服务是开发者获取用户地理位置信息的重要工具。这一服务主要通过Google Play服务提供的Location Services API来实现,它允许应用在后台或前台获取精确的定位数据,包括经纬度坐标、速度、...

    Android Google 位置定位

    本文将深入探讨如何实现Android Google 位置定位服务,以及如何在应用中显示这些位置信息。 首先,我们需要引入必要的依赖。在`build.gradle`模块文件中添加Google Play服务库,特别是位置服务部分: ```groovy ...

    用Android Studio制作的地图定位(使用谷歌地图SDK)

    在Android开发中,地图定位是一项常见的需求,而Google Maps SDK为开发者提供了强大的地图服务功能。本文将详细讲解如何使用Android Studio结合谷歌地图SDK来实现地图定位、实时位置更新、坐标与海拔显示以及轨迹...

    android google 定位程序 wifi基站GPS定位

    在Android平台上,Google提供了一套全面的定位服务,使得开发者能够轻松实现基于GPS、Wi-Fi基站和移动网络的综合定位功能。这篇文档将详细介绍如何在Android应用中利用这些技术进行定位。 首先,我们需要理解...

    android GoogleMap定位(四)

    在Android开发中,GoogleMap API是一个非常重要的工具,它允许开发者在应用中集成地图功能,实现定位、导航、路线规划等复杂操作。本篇将详细探讨如何在Android应用中使用GoogleMap进行定位。 首先,我们需要在项目...

    超实用android google定位范例

    在Android开发中,Google定位服务是开发者们常用的一种获取用户位置信息的方式。本文将深入探讨如何在Android应用中实现Google定位服务,以及相关的范例应用。Google定位服务提供了丰富的API和工具,使得开发者能够...

    android google定位源码

    Google定位服务是Android系统中集成的一套API,它允许应用程序通过多种途径(如GPS、Wi-Fi、移动网络)获取设备的位置信息。这套服务包括Fused Location Provider(融合位置提供者),它可以智能地结合不同定位源,...

    android P高通平台支持google nlp定位

    androiid P高通平台仅支持gps定位,此patch为使平台支持网络定位。由于需要使用google定位服务,必须在外网环境下才能定位成功,并且第一次定位时间较长。

    android google地图定位

    通过以上步骤,我们就成功地在Android应用中集成了Google Maps,实现了通过GPS定位显示用户位置的功能。当然,这只是基础实现,实际应用中可能还需要考虑更多细节,如错误处理、用户隐私政策、地图样式自定义等。...

    Android-Android定位基于百度基础定位sdk封装

    在“Android-Android定位基于百度基础定位sdk封装”项目中,开发者已经对原始的百度地图SDK进行了封装,创建了一个易于集成和使用的库。这个库可能包含了如下的功能: 1. **初始化配置**:封装了初始化百度定位服务...

    Android Studio定位

    在Android开发环境中,Android Studio是谷歌官方推荐的集成开发环境(IDE),对于移动开发者来说,它是构建Android应用程序的首选工具。本篇文章将深入探讨“Android Studio定位”这一主题,包括如何在Android ...

    Android Wifi Lbs 定位

    在移动设备上,尤其是Android系统,定位服务是不可或缺的功能之一。Android WiFi LBS(Location-Based Services,基于位置的服务)定位是通过结合WiFi网络信号和移动通信基站信息来确定设备的位置。这种定位方式在...

    android基于Gps 定位和基站定位获取经纬度

    开发者可以使用` fusedLocationProviderClient `(Google Play Services中的Fused Location Provider API)来获取更高效和准确的定位服务。 4. 博文链接: 提供的博文链接指向了一个ITeye上的博客文章,作者分享了...

    Android 定位权限申请

    - "GSP权限申请"可能指的是Google Play服务(Google Play Services)中的定位权限申请。Google Play服务提供了`Fused Location Provider`,它是一个高效的位置服务,能够结合多种定位源,如GPS、Wi-Fi和移动网络,...

    Android GPS获得定位数据源代码

    尽管现在的Android开发更倾向于使用Google Play Services的FusedLocationProviderClient,但对于学习和理解Android定位机制的基础概念,这段代码仍具有参考价值。不过,实际应用中应考虑更多的因素,如定位精度、...

    AndroidGPS定位源码

    压缩包中的"第16章 Android中的googlemap服务.pdf"和"16_01_Android中的googlemap服务.pdf"可能涉及到如何在Android应用中集成Google Maps,展示定位标记,以及实现地图交互功能。Google Maps API允许我们在地图上...

    android后台定时定位

    在Android平台上,实现“后台定时定位”涉及到多个关键知识点,包括Android服务(Service)、位置API、后台运行限制以及电量和性能优化。以下是对这些概念的详细说明: 1. **Android服务(Service)**:Android ...

    Android高德地图定位移动定位

    在Android开发中,集成高德地图进行移动定位是一项常见的需求,尤其对于开发地理位置相关的应用来说至关重要。本示例主要讲解如何在Android应用中使用高德地图API实现2D定位功能,适合初学者入门。首先,我们需要...

Global site tag (gtag.js) - Google Analytics