`
hwy584624785
  • 浏览: 47091 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Google Map(二)

 
阅读更多

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;
	}
}

0
0
分享到:
评论

相关推荐

    VS2008 WinForm类型的GoogleMap二次开发

    首先,让我们了解什么是Google Map二次开发。Google Maps API允许开发者在其应用程序中嵌入Google Maps,实现自定义功能,如添加标记、创建路线、获取地理位置等。二次开发是指基于现有的API进行扩展和定制,以满足...

    谷歌地图GoogleMap

    Google Map API(Application Programming Interface)则是谷歌为开发者提供的接口,允许他们将谷歌地图的功能集成到自己的网站或应用中,提供丰富的地图定制和交互能力。 一、Google Map API基础 Google Map API...

    谷歌地图Google Map API V3中文开发文档

    二、Map Options 在谷歌地图 Google Map API V3 中,开发者可以使用 MapOptions 对象来自定义地图的样式和行为。MapOptions 对象提供了多种属性,以便开发者可以设置地图的中心点、缩放级别、地图类型等参数。 ...

    GoogleMap谷歌地图demo

    在IT行业中,GoogleMap是一个广泛使用的地图服务,它提供了丰富的API接口,允许开发者在其应用程序中集成地图功能。本文将深入探讨GoogleMap谷歌地图API的使用,以及如何通过它实现一个全面的地图工具。 首先,让...

    Google Maps二次开发

    ### Google Maps二次开发 #### 一、概述 随着信息技术的发展,地理信息系统(GIS)与互联网技术结合产生了WebGIS,使得用户可以通过网络访问地理信息。WebGIS因其便捷性、易用性和广泛的应用领域(如交通、旅游、...

    google map应用实例

    在IT领域,Google Map是一款广泛使用的在线地图服务,它提供了丰富的功能,如定位、导航、路线规划、街景查看等。本应用实例将探讨如何利用Google Map API在离线环境中实现地图服务,这对于那些网络不稳定或者需要在...

    Google map 轨迹回放

    利用google map实现轨迹回放利用google map实现轨迹回放

    Ext Google Map 简易开发框架

    Ext Google Map简易开发框架是一种将流行的JavaScript库ExtJs与Google Maps API相结合的开发方式,用于构建功能丰富的地理信息系统。这个框架允许开发者轻松地在网页上展示地图,管理地图图层,控制图层的可见性,...

    googleMap_谷歌地图

    googleMap__谷歌___地图_.ppt

    googleMap根据经纬度获取地理位置

    首先,`googleMap根据经纬度获取地理位置`这个标题涉及到的核心技术是Google Maps Geocoding服务。Geocoding是将地址或坐标(经纬度)转换为地理坐标的过程,反之亦然。在Google Maps API中,我们可以使用Geocoding ...

    Google Map API 使用示例

    Google Map API 是一款强大的工具,它允许开发者在自己的网站或应用程序中嵌入地图功能,提供定位、导航、地理编码、路线规划等多种服务。本示例将深入探讨如何使用 Google Map API,帮助你理解和掌握其核心概念及...

    GoogleMap控件下载

    **GoogleMap控件详解** GoogleMap控件是一个用于集成谷歌地图功能到应用程序中的开源组件,尤其在Web开发中被广泛使用。它允许开发者在自己的应用界面中嵌入实时、交互式的地图服务,提供定位、导航、地理编码、...

    google map v2 Demo

    public void onMapReady(GoogleMap googleMap) { // 在这里,你可以对地图进行各种定制,如添加标记、路径等 GoogleMap map = googleMap; map.getUiSettings().setZoomControlsEnabled(true); map....

    谷歌MAP_V3中文详解以及一个简单例子

    var map = new google.maps.Map(document.getElementById('map'), { zoom: 8, center: myLatLng }); } ``` 这段代码会在ID为`map`的`div`元素内显示一个中心位于澳大利亚悉尼的地图,缩放级别为8。 谷歌地图API...

    安卓 谷歌地图 演示源码android google map

    安卓 android google map 谷歌地图

    Google Map MarkerCluster使用簡介

    Google Map MarkerCluster 使用簡介 Google Map MarkerCluster 是 Google Map API 中的一個功能強大且實用的工具,它可以幫助開發者快速實現地圖標記的聚合功能。下面是 MarkerCluster 的使用簡介: MarkerCluster...

    C++调用GOOGLEMAP代码

    标题 "C++调用GOOGLEMAP代码" 涉及到的是在C++程序中集成和使用Google Maps API的技术。Google Maps API是一个强大的工具,允许开发者在他们的应用程序中嵌入地图、路线规划、地理编码(地址转经纬度)等功能。在C++...

    稻歌Google Map截获器V1.1版安装程序

    【标题】"稻歌Google Map截获器V1.1版安装程序"涉及的主要知识点是利用第三方工具获取和处理Google Map的卫星影像数据。这款软件主要用于帮助用户抓取并保存Google Maps上的卫星图像,以便离线查看或者进行特定分析...

    google map api学习

    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 参考文档google map api 参考文档

Global site tag (gtag.js) - Google Analytics