简介
谷歌地图(Google Map)是 Google 公司提供的电子地图服务,包括局部详细的卫星照片。它提供了三种视图:一是矢量地图(传统地图),可提供政区和交通以及商业信息;二是不同分辨率的卫星照片(俯视图);三是地形视图,可以用以显示地形和等高线。 Google公司在2004年11月收购了美国Keyhole公司,推出了http://maps.google.com,令人耳目一新。但Google并未就此止步,在2005年6月底推出了桌面工具Google Earth,把“地球”放到了每个人的桌面上,让你坐在电脑前,就可以在名川大山间漫步,在摩天楼群中俯瞰,这一软件迅速震惊了整个互联网界。随着Google Map和Google Earth的诞生,也出现了很多非常有趣的应用,这些基于Google Earth和Google Maps的小游戏非常有创意,吸引了不少玩家。 目前Google Map在美国、英国、加拿大、日本等其它地区的服务已经完成。在北美的部分地方,开通了“街景视图”服务。使用者可以通过街道上的视角查看街景(例如公交车站,商铺等)。可以让使用者搜寻餐厅,亦可以建立自己的地图,与其他使用者分享有关的照片和评论。其它功能包括路线查询,可以显示两个地点之间的距离和行车时间等。 对于Google重点推出的Android系统来说,Google Map服务在其中有大量的应用。Android中基于Google Map的服务体现在两个方面:地图API和位置API。这两个API是彼此隔离的,都拥有自己的包。地图包为com.google.android.maps,而位置包为android.location。Android中的地图API提供了一些工具来显示和操作地图。例如:可以缩放和平移地图,可以更改地图模式(例如,从卫星视图更改为街道视图),可以向地图添加自定义数据等等;位置API则提供了GPS数据和实时位置数据的处理。这些API通过互联网调用来自Google服务器的服务,因此它们需要有网络连接才能工作。此外,在使用这些Android Maps API服务开发应用程序之前,需要同意Google的服务条款。Google对服务数据的用途设置了一定的限制,例如,可以将位置信息用于用户的个人用途,不能用于某些商业用途。
谷歌地图的简单应用
示例 演示Google Map的简单应用。
第一步:按照如下所示修改主布局文件的代码:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<com.google.android.maps.MapView
android:id="@+id/mapView"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:apiKey="0ZunUBGNC7PWrqO119b-n16583gjdHYGasrYZJQ"/>
</RelativeLayout>
第二步:修改MainActivity类代码的代码如下所示:
public class MainActivity extends MapActivity {
@Override
protected void onCreate(Bundle icicle) {
super.onCreate(icicle);
setContentView(R.layout.activity_main);
}
@Override
protected boolean isRouteDisplayed() {
return false;
}
}
第三步:在功能清单文件中添加如下代码:
<uses-library android:name="com.google.android.maps" /> <!-引用地图库->
运行程序,结果如下图所示:
运行程序会发现,上面的地图只能看不能操作,下面我们地图添加拖动和放大缩小功能,修改Activity类代码如下所示:
public class MainActivity extends MapActivity {
MapView mapView = null;
@Override
protected void onCreate(Bundle icicle) {
super.onCreate(icicle);
setContentView(R.layout.activity_main);
mapView = (MapView) findViewById(R.id.mapView);
mapView.setClickable(true);
mapView.setBuiltInZoomControls(true);
}
@Override
protected boolean isRouteDisplayed() {
return false;
}
}
再次运行程序,发现现在可以对地图进行点击手动和放大缩小等操作了,运行结果如下图所示:
示例:利用学过的选项菜单知识,为示例10.1中的地图程序添加地图显示模式(卫星视图、交通视图、街景视图)切换功的能。
第一步:在res目录下新建一个menu子目录,然后在里面新建一个名为activity_main.xml的文件,往其中添加如下代码:
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/general"
android:title="普通模式" />
<item android:id="@+id/traffic"
android:title="交通模式" />
<item android:id="@+id/satellite"
android:title="卫星模式" />
</menu>
第二步:修改Activity类的代码如下所示:
public class MainActivity extends MapActivity {
MapView mapView = null;
@Override
protected void onCreate(Bundle icicle) {
super.onCreate(icicle);
setContentView(R.layout.activity_main);
mapView = (MapView) findViewById(R.id.mapView);
mapView.setClickable(true);
mapView.setBuiltInZoomControls(true);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_main, menu);
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onMenuItemSelected(int featureId, MenuItem item) {
switch (item.getItemId()) {
case R.id.general:
mapView.setStreetView(true);
mapView.setTraffic(false);
mapView.setSatellite(false);
break;
case R.id.traffic:
mapView.setStreetView(false);
mapView.setTraffic(true);
mapView.setSatellite(false);
break;
case R.id.satellite:
mapView.setStreetView(false);
mapView.setTraffic(false);
mapView.setSatellite(true);
break;
}
return super.onMenuItemSelected(featureId, item);
}
@Override
protected boolean isRouteDisplayed() {
return false;
}
}
运行程序,结果如下图所示: