首页 > 其他分享 >原生 谷歌地图 应用

原生 谷歌地图 应用

时间:2023-03-27 18:03:08浏览次数:26  
标签:原生 Google false 谷歌 地图 视图 Override mapView

简介

谷歌地图(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" />   <!-引用地图库->

运行程序,结果如下图所示: image.png

运行程序会发现,上面的地图只能看不能操作,下面我们地图添加拖动和放大缩小功能,修改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;
	}
}

再次运行程序,发现现在可以对地图进行点击手动和放大缩小等操作了,运行结果如下图所示: image.png

示例:利用学过的选项菜单知识,为示例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;
	}
}

运行程序,结果如下图所示: image.png
image.png

标签:原生,Google,false,谷歌,地图,视图,Override,mapView
From: https://blog.51cto.com/lianghecai/6152722

相关文章

  • Google赶在WWDC前发布3D地图 对苹果“先发制人”
    TNW刚刚收到Google邀请,Google说6月6号即将有一个Google地图演示,这个事情相当滑稽,因为WWDC马上就要来了,而苹果被指望在大会上介绍自己的3D地图,但木已成舟,我们只能期望Google......
  • 亚马逊收购3D地图初创公司UpNext 欲与苹果和Google一分天下
    大家都知道,在使用KindleFire时如果想查看地图,必须下载第三方地图应用或通过浏览器访问在线地图服务,十分不方便。而为了打造功能更为全面的产品,亚马逊在周一宣布收购3D地图......
  • 一个小网站的云原生实践
    前言大家好,今天聊的这个小网站就是我自建的 linkedkeeper.com,它在2013年上线,到现在(2023年)也走过了10年的历程,从最开始部署的一个war到现在的Serverless部署,着实感受......
  • [原创]基于百度地图起草真实建筑建模实践
    在百度地图中标注建筑的高宽,并进行截图2.打开blender添加图像,参考或者背景打开标尺工具标记好建筑群大概的距离,然后右键调整物体的图片尺寸,一般图像多大就代表距离......
  • Android简单集成高德地图API
    首先进入高德官网  高德开放平台|高德地图API(amap.com)  注册登录完成之后创建新应用  点击之后呈现如下页面:  Key的名称随便起,主要是提交后会有一个......
  • PostgreSQL+PostGIS扩展 ogr2ogr命令导入gdb地图数据
    实现将arcgis支持的.gdb中的数据和qgis支持的.gpkg中的数据导入到Postgres数据库中第一步:安装PostgreSQL安装好后自带pgAdmin管理工具相当于是一个图形管理工具第二步:......
  • 如何申请谷歌bard AI 内测
    官网国内账号不支持申请更改国家也不好使;需要申请新的美国、英国账号;abandoned!正常的流程:抢不到候补没有关系,语言模型GPT已经够用了;现在应该还是大哥地位;文章来源:[刘......
  • 云原生落地实践:山西数智时代基于 Rainbond 实现智慧景区
    云原生落地实践:山西数智时代基于Rainbond实现智慧景区大家好,我是山西数智时代科技有限公司的赵佳鹏,我们公司成立于2018年,专注于智慧旅游、景区信息化建设。公司目前的主......
  • Leaflet中使用Leaflet.Spin插件实现地图加载等待效果
    场景Leaflet快速入门与加载OSM显示地图:Leaflet快速入门与加载OSM显示地图_BADAO_LIUMANG_QIZHI的博客-在上面的基础上,怎样使用插件实现地图加载等待效果如下注:博客:BADAO_LIU......
  • 谷歌霸屏现象
    近年来,谷歌霸屏现象越来越普遍,这种现象在某些情况下可能会给人们带来便利,但在其他情况下也会给人们带来不便。但无论如何,谷歌霸屏都在某种程度上反映了现代信息时代的特点。......