Android与位置相关的应用开发(1)-MapView简单使用

基于位置应用(LBS)伴随着无线的发展越来越走入大家的生活,在无线应用中这类应用也越来越多,而地图作为一个重要部分与基于位置的应用密不可分,这篇文章总结了在学习android基于位置的应用时遇见的问题和学习心得。
1)注册google地图API密钥:
keytool –alias androiddebugkey –keystore “keystore file path” –storepass android –keypass android
在Google网站上注册Map-API:
https://developers.google.com/android/maps-api-signup?hl=zh-CN
见下图:
[img]http://dl.iteye.com/upload/attachment/0070/6644/d95c4b0e-a86b-3fd2-b7ad-a6bef10b91ed.jpg[/img]
2)创建android工程,修改android描述文件:
注意:[color=red]新建的android选择Google APIs(android+google api),不要使用Android作为target[/color];
修改描述文件:
在Application中添加user-liberary,[color=red]<uses-library android:name="com.google.android.maps" />[/color]
添加user-permission,[color=red]<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.INTERNET" />[/color]
修改后的文件如下:
[img]http://dl.iteye.com/upload/attachment/0070/6654/8b834f43-25bb-31aa-a944-aaadeabbaa06.jpg[/img]
3)创建layout文件:
创建如下的layout文件,Google提供的MapView对地图做了很好的封装,建议在应用中使用MapView完成地图控件,注意[color=red]设置MapView的clickable属性为true,否则的MapView中的地图不允许拖动[color];
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >

<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >

<Button
android:id="@+id/zoomin"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="clickHandler"
android:padding="12dp"
android:text="+" />

<Button
android:id="@+id/zoomout"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="clickHandler"
android:padding="12dp"
android:text="-" />

<Button
android:id="@+id/Satellites"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="clickHandler"
android:padding="6dp"
android:text="Satellites" />

<Button
android:id="@+id/Street"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="clickHandler"
android:padding="6dp"
android:text="Street" />

<Button
android:id="@+id/Traffic"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="clickHandler"
android:padding="6dp"
android:text="Traffic" />

<Button
android:id="@+id/Normal"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="clickHandler"
android:padding="6dp"
android:text="Normal" />
</LinearLayout>

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

</LinearLayout>

4)创建新的Activity:
创建一个新的Activity,[color=red]该Activity继承MapActivity[/color],这里的实例类实现了地图的缩放,显示卫星地图,显示街道这些功能,代码如下所示:
package com.local;

import com.google.android.maps.GeoPoint;
import com.google.android.maps.MapActivity;
import com.google.android.maps.MapView;
import android.os.Bundle;
import android.view.View;

public class MapViewActivity extends MapActivity {
MapView mapView;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mapView = (MapView) findViewById(R.id.map);
mapView.getController()
.setCenter(
new GeoPoint((int) (31.220000 * 1E6),
(int) (121.480000 * 1E6)));
mapView.getController().setZoom(10);
}

public void clickHandler(View target) {
switch (target.getId()) {
case R.id.zoomin:
mapView.getController().zoomIn();
break;
case R.id.zoomout:
mapView.getController().zoomOut();
break;
case R.id.Satellites:
mapView.setSatellite(true);
break;
case R.id.Street:
mapView.setStreetView(true);
break;
case R.id.Traffic:
mapView.setTraffic(true);
break;
case R.id.Normal:
mapView.setSatellite(false);
mapView.setStreetView(false);
mapView.setTraffic(false);
break;
}
}

@Override
protected boolean isRouteDisplayed() {

return false;
}
}

代码运行结果如下所示:
[img]http://dl.iteye.com/upload/attachment/0070/6669/a8422e1c-e17b-3fa5-914d-48faa583bf79.jpg[/img]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值