`
逐风林羽
  • 浏览: 34362 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

[Android]googleMap的简单使用,地图定位,图标绘制。

阅读更多

    首先项目要设置成支持googlemap的api,在Project Build Target中选择google APIs。

 

    manifest需要加上权限设置。(写在</application>下)

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

 

    布局中加上mapview。 apikey需要自己去申请,具体在网上找教程很多。

<com.google.android.maps.MapView
    android:id="@+id/map"  
    android:apiKey="**********************************"      
    android:layout_width="fill_parent"  
    android:layout_height="fill_parent"   
    android:clickable="true" />

 

    初始化mapview

 

 

private void initMapView() {
		map = (MapView) findViewById(R.id.map);
		projection = map.getProjection();
		mapControlle = map.getController();
		map.setTraffic(false);// 交通模式
		map.setSatellite(false);// 卫星模式
		map.setBuiltInZoomControls(true);// 打开缩放控件
	}

 

    定位我的位置

 

showLocation(getCurrentGeoPoint());//我的位置

// 定位
	private void showLocation(GeoPoint location) {
		if (null != location) {
			mapController.animateTo(location);
			mapController.setZoom(15);//缩放等级1-21
		}
	}


// 获得当前经纬度并返回GeoPoint对象
	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));
	}

 

   添加目的地(另一个经纬度坐标)

    初始化定位信息

   GeoPoint endGeoPoint = new GeoPoint(39950017,116310144);

 
private void initLocation() {
                final MyLocationOverlay overlay;
		overlay = new MyLocationOverlay(this, map);	//建地图层
                overlay.enableMyLocation(); // 监听来自位置的更新
		overlay.runOnFirstFix(new Runnable() {		//每次更新执行
			public void run() {
			mapController.setZoom(17);	//缩放
			mapController.animateTo(overlay.getMyLocation());	//指定地图显示所在位置
			}
		});
		map.getOverlays().add(overlay);	//将定位层加入坐标层中
                map.getOverlays().add(new PointOverlay(endGeoPoint));	//加入终点图标
	} 

 

 

//绘制图标,将这个类的对象加入Overlays中,自动调用draw方法

        private Projection projection;

	class PointOverlay extends Overlay {

		private GeoPoint geoPoint;

		public PointOverlay() {

		}

		public PointOverlay(GeoPoint geoPoint) {

			this.geoPoint = geoPoint;

		}

		public void draw(Canvas canvas, MapView mapv, boolean shadow) {

			super.draw(canvas, mapv, shadow);

			Point point = new Point();

			projection.toPixels(geoPoint, point);

			Bitmap bmp = BitmapFactory.decodeResource(getResources(),R.drawable.arrow_add);

			Paint paint = new Paint();

			canvas.drawBitmap(bmp, point.x, point.y, paint);

		}

	}
 

 

   这样在布局中加两个按钮点击后调用showLocation就可以实现将地图定位到指定地点。显示定位地点图标。

4
2
分享到:
评论
3 楼 luwies 2012-09-07  
O(∩_∩)O谢谢:oops: 真是大写的,我太不小心了,这个apiKey居然是不能用Alt+/调出来的。。。
2 楼 逐风林羽 2012-09-07  
luwies 写道
请教一下,我用的是Google APIs[Android 4.1],按照您的文章写了一下这个工程。
<com.google.android.maps.MapView 
    android:id="@+id/map"   
    android:apiKey="**********************************"       
    android:layout_width="fill_parent"   
    android:layout_height="fill_parent"    
    android:clickable="true" /> 
apikey的内容我已经替换成我自己的了。
在这个代码中有这样的一个错误,--->>>error: No resource identifier found for attribute 'apikey' in package 'android'
我的AndroidManifest.xml如下:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.googlemap"
    android:versionCode="1"
    android:versionName="1.0" >
    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="15" />
    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <uses-library android:name="com.google.android.maps"
            android:required="true"/>
        <activity
            android:name=".GoogleMapActivity"
            android:label="@string/title_activity_google_map" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>   
</manifest>
  希望您能帮我解决一下这个问题。。。O(∩_∩)O谢谢

有点需要看一下 注意android:apiKey的拼写,要注意大小写。我用的是GoogleAPIs 2.2 你也换下api试一下。如果是key值不对 不会报出异常,只是无法显示地图层。你再看一下。
1 楼 luwies 2012-09-07  
请教一下,我用的是Google APIs[Android 4.1],按照您的文章写了一下这个工程。
<com.google.android.maps.MapView 
    android:id="@+id/map"   
    android:apiKey="**********************************"       
    android:layout_width="fill_parent"   
    android:layout_height="fill_parent"    
    android:clickable="true" /> 
apikey的内容我已经替换成我自己的了。
在这个代码中有这样的一个错误,--->>>error: No resource identifier found for attribute 'apikey' in package 'android'
我的AndroidManifest.xml如下:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.googlemap"
    android:versionCode="1"
    android:versionName="1.0" >
    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="15" />
    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <uses-library android:name="com.google.android.maps"
            android:required="true"/>
        <activity
            android:name=".GoogleMapActivity"
            android:label="@string/title_activity_google_map" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>   
</manifest>
  希望您能帮我解决一下这个问题。。。O(∩_∩)O谢谢

相关推荐

    Google Android SDK开发范例大全(PDF高清完整版1)(4-1)

    9.6 移动版GoogleMap——Geocoder反查Address对象 9.7 规划导航路径——DirectionsRoute 9.8 移动设备上的Picasa相册——GooglePicasaAPI 9.9 随身翻译机——GoogleTranslateAPI 第10章 创意Android程序设计 10.1 ...

    android开发揭秘PDF

    9.3.1 GoogleMap概述 9.3.2 准备工作 9.3.3 GoogleMapAPI的使用 9.3.4 定位系统 9.4 桌面组件 9.4.1 快捷方式 9.4.2 实时文件夹 9.4.3 Widget开发 9.5 账户管理 9.6 小结 第三部分 实例篇 第10章 Android应用开发 ...

    Google Android SDK开发范例大全(第3版) 4/5

    Google Map应用:GPS定位、规划导航路径、GPS Google地图、地址反查地理坐标等卫星全球定位实例。 创意程序设计:即时动态桌面、电蚊香、转转轮盘、任务管理器、中英发音字典、手机手电筒、GPS轨迹记录器、女性贴身...

    Google Android SDK开发范例大全(第3版) 3/5

    Google Map应用:GPS定位、规划导航路径、GPS Google地图、地址反查地理坐标等卫星全球定位实例。 创意程序设计:即时动态桌面、电蚊香、转转轮盘、任务管理器、中英发音字典、手机手电筒、GPS轨迹记录器、女性贴身...

    Google Android SDK开发范例大全(第3版) 5/5

    Google Map应用:GPS定位、规划导航路径、GPS Google地图、地址反查地理坐标等卫星全球定位实例。 创意程序设计:即时动态桌面、电蚊香、转转轮盘、任务管理器、中英发音字典、手机手电筒、GPS轨迹记录器、女性贴身...

    Google Android SDK开发范例大全(PDF高清完整版3)(4-3)

    9.6 移动版GoogleMap——Geocoder反查Address对象 9.7 规划导航路径——DirectionsRoute 9.8 移动设备上的Picasa相册——GooglePicasaAPI 9.9 随身翻译机——GoogleTranslateAPI 第10章 创意Android程序设计 10.1 ...

    Google Android SDK开发范例大全(PDF完整版4)(4-4)

    9.6 移动版GoogleMap——Geocoder反查Address对象 9.7 规划导航路径——DirectionsRoute 9.8 移动设备上的Picasa相册——GooglePicasaAPI 9.9 随身翻译机——GoogleTranslateAPI 第10章 创意Android程序设计 10.1 ...

    Google Android SDK开发范例大全的目录

    9.6 移动版GoogleMap——Geocoder反查Address对象 9.7 规划导航路径——DirectionsRoute 9.8 移动设备上的Picasa相册——GooglePicasaAPI 9.9 随身翻译机——GoogleTranslateAPI 第10章 创意Android程序设计 10.1 ...

    《Android应用开发揭秘》附带光盘代码.

    《Android应用开发揭秘》全部实例源代码,配合《Android应用开发揭秘》使用 前言  第一部分 准备篇  第1章 Android开发简介  1.1 Android基本概念  1.1.1 Android简介  1.1.2 Android的系统构架  1.1.3 ...

    Google Android SDK开发范例大全(第3版) 1/5

    Google Map应用:GPS定位、规划导航路径、GPS Google地图、地址反查地理坐标等卫星全球定位实例。 创意程序设计:即时动态桌面、电蚊香、转转轮盘、任务管理器、中英发音字典、手机手电筒、GPS轨迹记录器、女性贴身...

    《Android应用开发揭秘》源码

     9.3.1 GoogleMap概述  9.3.2 准备工作  9.3.3 GoogleMapAPI的使用  9.3.4 定位系统  9.4 桌面组件  9.4.1 快捷方式  9.4.2 实时文件夹  9.4.3 Widget开发  9.5 账户管理  9.6 小结  第三部分 实例篇  ...

    Android应用开发揭秘pdf高清版

    9.3.1 GoogleMap概述 9.3.2 准备工作 9.3.3 GoogleMapAPI的使用 9.3.4 定位系统 9.4 桌面组件 9.4.1 快捷方式 9.4.2 实时文件夹 9.4.3 Widget开发 9.5 账户管理 9.6 小结 第三部分 实例篇 第10章 Android应用开发 ...

    Google Android SDK开发范例大全(第3版)part2

     《Google Android SDK开发范例大全(第3版)》在上一版的基础上,以Android手机应用程序开发(采用Android SDK 2.3.3)为主题,超过200多个范例全面且深度地整合了手机、网络及服务等多个开发领域,为读者提高程序...

    Google Android SDK开发范例大全(完整版附部分源码).pdf

    9.6 移动版GoogleMap——Geocoder反查Address对象 9.7 规划导航路径——DirectionsRoute 9.8 移动设备上的Picasa相册——GooglePicasaAPI 9.9 随身翻译机——GoogleTranslateAPI 第10章 创意Android程序设计 ...

    精通ANDROID 3(中文版)1/2

    17.1.1 从Google获取map-api密钥  17.1.2 MapView和MapActivity  17.1.3 使用覆盖图添加标记  17.2 位置包  17.2.1 使用Android进行地理编码  17.2.2 使用后台线程进行地理编码  17.2.3 ...

Global site tag (gtag.js) - Google Analytics