基于位置应用(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];
4)创建新的Activity:
创建一个新的Activity,[color=red]该Activity继承MapActivity[/color],这里的实例类实现了地图的缩放,显示卫星地图,显示街道这些功能,代码如下所示:
代码运行结果如下所示:
[img]http://dl.iteye.com/upload/attachment/0070/6669/a8422e1c-e17b-3fa5-914d-48faa583bf79.jpg[/img]
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]