在Google Map(一) 中,我们学习了怎么样在手机中显示google地图,但是知道怎么显示地图是远远不够得,我们要利用它来做一些对我们有用的事情,今天我们要做的是:在google map上的某个经纬度显示一张图片,并且我们点击图片会弹出一个对话框,显示一些信息。
涉及到的知识点:
Maps API Key的获取,AlertDialog对话框的使用,Overlay抽象类,OverlayItem类,GeoPoint类。
先分别介绍下这几个类:
AlertDialog类:显示对话框
Overlay抽象类:图层,地图上显示的标记就是放在图层上,他有两个继承它的子类:ItemizedOverlay,MyLocationOverlay
OverlayItem类:地图上显示的标记
GeoPoint类:通过经纬度指定地图上的一个点
下面就来完成上面所提及的功能:
1、首先要在AndroidManifest.xml中添加the standard Android library,在AndroidManifest.xml的application节点中添加如下内容:
<uses-library android:name="com.google.android.maps" />
另外还要开通网络权限,在manifest的child节点中添加如下:
<uses-permission android:name="android.permission.INTERNET" />
AndroidManifest.xml完整代码如下:
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="weiyong.googlemap1" android:versionCode="1" android:versionName="1.0"> <uses-sdk android:minSdkVersion="8" /> <application android:icon="@drawable/icon" android:label="@string/app_name"> <uses-library android:name="com.google.android.maps" /> <activity android:name=".googlemap1" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> <uses-permission android:name="android.permission.INTERNET" /> </manifest>
2、打开res/layout/main.xml,在里面添加com.google.android.maps.MapView节点:
<?xml version="1.0" encoding="utf-8"?>
<com.google.android.maps.MapView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/mapview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:clickable="true"
android:apiKey="0JF2BOEcpjLIf3HVmXn28EL-ahyk_mJbHBICUeg"
/><!-- 这个apiKey是我申请的,各不一样,你们要用使用自己的apiKey -->
配置文件到这里也就结束了,下面是要完成编码。
这里要说明一点:在google map上(MapView)放置标记(OverlayItem)的时候,我们必须放在中间层一个叫做图层(Overlay)的层上,所以在MapView之上创建一个图层,需要创建一个类,实现Overlay,并生成该类的对象,然后对该对象添加到MapView。【通过MapView.getOverlays()】
3、新建一个图层类:HelloItemizedOverlay,继承ItemizedOverlay(Overlay的子类):
public class HelloItemizedOverlay extends ItemizedOverlay<OverlayItem> {
HelloItemizedOverlay类的完整代码如下,附加详细的注释:
import java.util.*; import android.app.AlertDialog; import android.content.Context; import android.graphics.drawable.Drawable; import com.google.android.maps.ItemizedOverlay; import com.google.android.maps.OverlayItem; /** * 在MapView之上创建一个图层,需要创建一个类,实现Overlay,并生成该类的对象, * 然后对该对象添加到MapView。【MapView.getOverlays()】 * 一个OverlayItem对象代表了一个地图上显示的标记 */ public class HelloItemizedOverlay extends ItemizedOverlay<OverlayItem> { //创建一个list对象,用于持有该图层中所有的标记数 private List<OverlayItem> overlayItem = new ArrayList<OverlayItem>(); private Context context = null; //第一个参数用于指定标记所使用的默认图片 public HelloItemizedOverlay(Drawable defaultMarker, Context context) { //必须调用父类的构造方法 super(boundCenterBottom(defaultMarker)); this.context = context; } public HelloItemizedOverlay(Drawable defaultMarker) { super(boundCenterBottom(defaultMarker)); } //用于生成还得OverlayItem对象添加到list中 public void addOverlay(OverlayItem overlay) { overlayItem.add(overlay); populate();//一旦有新overlayItem数据进来,在调用其他方法之前必须先调用populate()方法 } // 创建一个OverlayItem索引 @Override protected OverlayItem createItem(int i) { return overlayItem.get(i); } // 返回当前的Overlay当中所包含的OverlayItem对象 @Override public int size() { return overlayItem.size(); } // 当用户点击标记的时候所调用的函数 @Override protected boolean onTap(int index) { OverlayItem item = overlayItem.get(index); AlertDialog.Builder dialog = new AlertDialog.Builder(context); dialog.setTitle(item.getTitle()); dialog.setMessage(item.getSnippet()); dialog.show(); return true; } }
4、Activity类googlemap1类不是和以往一样继承Activity类,而是继承MapActivity类。
具体代码如下: public class googlemap1 extends MapActivity {
import java.util.List;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import com.google.android.maps.GeoPoint;
import com.google.android.maps.MapActivity;
import com.google.android.maps.MapView;
import com.google.android.maps.Overlay;
import com.google.android.maps.OverlayItem;
public class googlemap1 extends MapActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
MapView mapView = (MapView) findViewById(R.id.mapview);
//设置mapView显示用于缩放的工具条
mapView.setBuiltInZoomControls(true);
//调用mapView对象的getOverlays()方法,用于得到所有的图层对象
List<Overlay> mapOverlays = mapView.getOverlays();
Drawable drawable = this.getResources().getDrawable(R.drawable.icon);//引用android自带的图片
HelloItemizedOverlay itemizedoverlay = new HelloItemizedOverlay(drawable,this);
//创建一个GeoPoint对象,通过经纬度指定地图上的一个点
GeoPoint point = new GeoPoint(19240000,-99120000);
//创建一个OverLayItem对象
OverlayItem overlayitem = new OverlayItem(point, "Hola, Mundo!", "I'm in Mexico City!");
//将创建好的OverlayItem对象添加到HelloItemizedOverlay对象中
itemizedoverlay.addOverlay(overlayitem);
//将HelloItemizedOverlay对象添加到mapView
mapOverlays.add(itemizedoverlay);
}
@Override
protected boolean isRouteDisplayed() {
return false;
}
}
发表评论
-
数据结构利器之私房STL
2012-12-11 10:29 0http://www.cnblogs.com/daoluanx ... -
Android xml资源文件中@、@android:type、@*、?、@+含义和区别
2011-12-28 08:48 1053一.@代表引用资源 1.引用自定义资源。格式:@[packa ... -
关于handler
2011-11-11 17:26 1173链接:Android的消息机制 ... -
常用activity跳转
2011-11-01 10:50 1621------------------------------- ... -
Activity的android:launchMode
2011-10-14 09:41 1097<activity android:launchMode ... -
android wifi
2011-10-10 10:26 1079wifi网卡的状态由一系列的整型常量来表示的: 1)、int ... -
android 蓝牙
2011-09-26 11:32 1184对于一般的软件开发人员来说,蓝牙是很少用到的,尤其是Andro ... -
HttpClient的使用
2011-09-13 11:11 1098HTTP 协议可能是现在 Internet 上使用得最多、最重 ... -
XML解析之-pull解析
2011-09-09 10:07 10750Pull是Android内置的xml解析器。Pull解析器的运 ... -
XML解析之-SAX解析
2011-09-08 18:04 1461在android开发中,我们经常使用SAX解析来解析xml数据 ... -
XML解析之-XStream解析
2011-09-08 17:07 11405本例使用XStream生成一个xml文件,再发序列化xml ... -
json数据解析一
2011-09-08 11:05 1631本例用JsonReader类来解析 ... -
json数据解析二
2011-09-08 10:47 1260这一篇我们将采用Gson类来解析json数据。把json解析出 ... -
Google Map(一)
2011-09-06 18:24 1076今天学习了google map的简单开发,此篇博文主要内容是: ...
相关推荐
首先,让我们了解什么是Google Map二次开发。Google Maps API允许开发者在其应用程序中嵌入Google Maps,实现自定义功能,如添加标记、创建路线、获取地理位置等。二次开发是指基于现有的API进行扩展和定制,以满足...
Google Map API(Application Programming Interface)则是谷歌为开发者提供的接口,允许他们将谷歌地图的功能集成到自己的网站或应用中,提供丰富的地图定制和交互能力。 一、Google Map API基础 Google Map API...
二、Map Options 在谷歌地图 Google Map API V3 中,开发者可以使用 MapOptions 对象来自定义地图的样式和行为。MapOptions 对象提供了多种属性,以便开发者可以设置地图的中心点、缩放级别、地图类型等参数。 ...
在IT行业中,GoogleMap是一个广泛使用的地图服务,它提供了丰富的API接口,允许开发者在其应用程序中集成地图功能。本文将深入探讨GoogleMap谷歌地图API的使用,以及如何通过它实现一个全面的地图工具。 首先,让...
### Google Maps二次开发 #### 一、概述 随着信息技术的发展,地理信息系统(GIS)与互联网技术结合产生了WebGIS,使得用户可以通过网络访问地理信息。WebGIS因其便捷性、易用性和广泛的应用领域(如交通、旅游、...
在IT领域,Google Map是一款广泛使用的在线地图服务,它提供了丰富的功能,如定位、导航、路线规划、街景查看等。本应用实例将探讨如何利用Google Map API在离线环境中实现地图服务,这对于那些网络不稳定或者需要在...
利用google map实现轨迹回放利用google map实现轨迹回放
Ext Google Map简易开发框架是一种将流行的JavaScript库ExtJs与Google Maps API相结合的开发方式,用于构建功能丰富的地理信息系统。这个框架允许开发者轻松地在网页上展示地图,管理地图图层,控制图层的可见性,...
googleMap__谷歌___地图_.ppt
首先,`googleMap根据经纬度获取地理位置`这个标题涉及到的核心技术是Google Maps Geocoding服务。Geocoding是将地址或坐标(经纬度)转换为地理坐标的过程,反之亦然。在Google Maps API中,我们可以使用Geocoding ...
Google Map API 是一款强大的工具,它允许开发者在自己的网站或应用程序中嵌入地图功能,提供定位、导航、地理编码、路线规划等多种服务。本示例将深入探讨如何使用 Google Map API,帮助你理解和掌握其核心概念及...
**GoogleMap控件详解** GoogleMap控件是一个用于集成谷歌地图功能到应用程序中的开源组件,尤其在Web开发中被广泛使用。它允许开发者在自己的应用界面中嵌入实时、交互式的地图服务,提供定位、导航、地理编码、...
public void onMapReady(GoogleMap googleMap) { // 在这里,你可以对地图进行各种定制,如添加标记、路径等 GoogleMap map = googleMap; map.getUiSettings().setZoomControlsEnabled(true); map....
var map = new google.maps.Map(document.getElementById('map'), { zoom: 8, center: myLatLng }); } ``` 这段代码会在ID为`map`的`div`元素内显示一个中心位于澳大利亚悉尼的地图,缩放级别为8。 谷歌地图API...
安卓 android google map 谷歌地图
Google Map MarkerCluster 使用簡介 Google Map MarkerCluster 是 Google Map API 中的一個功能強大且實用的工具,它可以幫助開發者快速實現地圖標記的聚合功能。下面是 MarkerCluster 的使用簡介: MarkerCluster...
标题 "C++调用GOOGLEMAP代码" 涉及到的是在C++程序中集成和使用Google Maps API的技术。Google Maps API是一个强大的工具,允许开发者在他们的应用程序中嵌入地图、路线规划、地理编码(地址转经纬度)等功能。在C++...
【标题】"稻歌Google Map截获器V1.1版安装程序"涉及的主要知识点是利用第三方工具获取和处理Google Map的卫星影像数据。这款软件主要用于帮助用户抓取并保存Google Maps上的卫星图像,以便离线查看或者进行特定分析...
var map = new google.maps.Map(document.getElementById('map'), { zoom: 8, center: myLatLng }); var marker = new google.maps.Marker({ position: myLatLng, map: map, title: 'Hello World!' }); } ...
google map api 参考文档google map api 参考文档google map api 参考文档google map api 参考文档google map api 参考文档google map api 参考文档