一、在Google地图上显示本地的位置。

1、首先注意在AndroidManifest.xml文件中,增加权限:

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission>

在application中activity外,增加:uses-library

<uses-library android:name="com.google.android.maps" />

2、在类中,将extends Activity改为extends MapActivity

3、设置可放大缩小地图的控件。

在xml文件中,添加以下内容:

<LinearLayout android:orientation="vertical"
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:id="@+id/zoom" android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true" >
</LinearLayout>

在类中,加入:

LinearLayout zoomLayout = (LinearLayout)findViewById(R.id.zoom);
View zoomView = mapView.getZoomControls();
zoomLayout.addView(zoomView,
new LinearLayout.LayoutParams(
LayoutParams.WRAP_CONTENT,
LayoutParams.WRAP_CONTENT));
mapView.displayZoomControls(true);

mapView.getController().setZoom(14);//设置缩放级别
p = this.getCurrentGeoPoint();
mapView.getController().animateTo(p);// 通过动画方式移动到指定坐标s

4、通过以下方法得到当前位置的经纬度

private GeoPoint getCurrentGeoPoint() {
LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
Location location = locationManager
.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
return new GeoPoint((int) (location.getLatitude() * 1e6),
(int) (location.getLongitude() * 1e6));
}

5、通过以下方式显示当前位置在地图上显示:

class MapOverlay extends com.google.android.maps.Overlay
{
@Override
public boolean draw(Canvas canvas, MapView mapView,
boolean shadow, long when)
{
super.draw(canvas, mapView, shadow);
//—translate the GeoPoint to screen pixels—
Point screenPts = new Point();
mapView.getProjection().toPixels(p, screenPts);
//—add the marker—
Bitmap bmp = BitmapFactory.decodeResource(
getResources(), R.drawable.pushpin);
canvas.drawBitmap(bmp, screenPts.x, screenPts.y-50, null);
return true;
}
}

在oncreate方法中,加入:

MapOverlay mapOverlay = new MapOverlay();
List<Overlay> listOfOverlays = mapView.getOverlays();
listOfOverlays.clear();
listOfOverlays.add(mapOverlay);

这样就能在屏幕中显示你当前位置的地图显示了;

如下图:

源代码见:http://henzil.googlecode.com/svn/trunk/android.googleMap01/

二、输入地址,在地图上显示相应的位置。此方法是通过查询地址名称,返回一个list结果。在地图上显示:

此方法与上述方法基本一致,不同之处在于:是用getFromLocationName方法,来查询目的地的经纬度。

如下代码:

// 通过系统默认区域设置进行地图定位
Geocoder gc = new Geocoder(this);
mapView.setStreetView(true);
try {
// 通过地址名称描述返回一个查询结果的数组(后面参数为返回最大结果数)
addresses = gc.getFromLocationName(address, 5);

// 如果未查询到任何结果
if (addresses != null) {
geoPoint = new GeoPoint(
// 返回纬度,经度
(int) (addresses.get(0).getLatitude() * 1E6),
(int) (addresses.get(0).getLongitude() * 1E6));

setTitle(addresses.get(0).getFeatureName());
MyOverlay myOverlay = new MyOverlay();
mapView.getOverlays().add(myOverlay);
mapView.getController().setZoom(16);
mapView.getController().animateTo(geoPoint);
}
} catch (Exception e) {
e.printStackTrace();
}

如下图所示:

更多相关文章

  1. Android中滑屏初探 ---- scrollTo 以及 scrollBy方法使用说明
  2. Android异步加载图像小结 (含线程池,缓存方法)
  3. android上一些方法的区别和用法的注意事项
  4. Android实现下载文件功能的方法
  5. Android 通讯录中用到的关于按名字首字母排序方法
  6. 安卓(android)使用GPS,获取经纬度
  7. 开机引导程序只执行一次的方法
  8. Android MediaPlayer 常用方法介绍

随机推荐

  1. Invalidate和postInvalidate的区别
  2. 《深入解析Android(安卓)5.0系统》——导
  3. Flutter笔记(二)
  4. Android将胜过Windows Mobile五大原因
  5. android 问题总结
  6. Android(安卓)AOSP基础(三)Android系统源码
  7. android线性布局参数详解
  8. 在Windows中的安装Android(安卓)NDK开发
  9. 【Android】TextView的文字长度测量及各
  10. Android(安卓)Native 绘图方法