`

GoogleMap(其一)

 
阅读更多
    这一节我们主要讲述google map在android手机中的使用,我们一般是用google map API+Location API,就是地图API+地位API,如果加上一些服务端以及网络方面的知识,我们可以制作出很有创意的应用,而这些正是现在流行的LBS,主要涉及技术有地图API+地位API+javaee 服务端+手机通信+XMPP协议(主要是及时通信)。可以发挥自己的想象作出好的有创意的应用,比如说,我们在车上看见一美女,而又不好意思打招呼,但她手机中也有该LBS应用,那么我们可以查询当前多少米范围内有多少人使用这个应用,然后进一步锁定到车上的她,然后,你懂的。又或者我们出差在某地,打开应用可以从地图中标识找到我们喜欢吃得美食。这一切都归根于基本的地图服务,只要我们适当整合资源。

  好了,不说废话了,开始我们的google map编程吧。

  1:必须下载google Map扩展库,下载方式是通过AVD,跟你下载最新SDK一样,具体就不说了。

  2:申请Android Map API Key:



  在命令行下进入其路径地址,进入到:C:\Users\用户名\.android下:然后 输入

keytool -list -v -keystore debug.keystore ,这时它一般会提示你输入密码,默认的密码是android, 你输入android,如果完整输入android后,没有显示也没有关系,按回车即可,这样就把三种指纹证书全部列出来了,包括MD5、SHA1、SHA256。(密钥口令是android)

,后显示证书指纹如下:





3:记下认证指纹,接着去往http://code.google.com/android/maps-api-signup.html

在复选框上打钩后,输入你的认证指纹,然后点击Generate API Key,这时你就申请到了你的key,当然前提是你必须登录。(您可能需要一个google账号或者注册过google市场),

申请Google Maps API 时需要验证MD5指纹证书,那么我们就在文本框中输入MD5证书(注意是MD5,而不是SHA1等)

如图:



生成的key为:





好了,既然有了Key,那么就来开始编码了.步骤如下:

1:新建项目,选中Google apis.

2:必须在 AndroidManifest.xml 文件中声明: <uses-library android:name="com.google.android.maps"/>

3:当然了,我们需要访问网络,或者也需要WIFI定位等,那么就加入些权限吧。





<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
    <uses-permission android:name="android.permission.ACCESS_CHECKIN_PROPERTIES"/>
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>

4:新建布局文件,并添加:





<?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" >

    <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:apiKey="0XfqXJAIPzqeUtU7mTM2PQDwplHCFk93iAglI0w"
        android:clickable="true">
    </com.google.android.maps.MapView>

</LinearLayout>


5:然后定义activity继承MapActivity,这里我们可以定义菜单,分别切换不同的地图模式:街道、卫星、交通等。

这里我们需要了解3个对象: MapView 显示地图 MapController 控制地图,当然最重要的是怎么定位地图一个点,根据初中地理可知道,使用经纬度可以定义地球任意一点,这里需要用到google API的GeoPoint对象。

下面是代码:

package com.dongzi;

import android.content.Context;
import android.location.Location;
import android.location.LocationManager;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.Window;

import com.google.android.maps.GeoPoint;
import com.google.android.maps.MapActivity;
import com.google.android.maps.MapController;
import com.google.android.maps.MapView;

/**
 * location api和map api结合起来,通过location api定位,然后在map api中显示地图:
 * @author Lenovo
 *
 */
public class GooglemapDemoActivity extends MapActivity {
    private static final String Tag=GooglemapDemoActivity.class.getName();
    
    
    
    private MapView mapView=null;
    private MapController mapController=null;
    
    int latitudeE6=39*1000000;
    int longitudeE6=116*1000000;
    int zoomLevel=12;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.main);
        mapView = (MapView) findViewById(R.id.mapView);
        //设置街道模式,可放大
        mapView.setStreetView(true); //mapView.setTraffic(true);mapView.setSatellite(false);
        mapView.setBuiltInZoomControls(true);
        //获得map控制器
        mapController=mapView.getController();
        mapController.setZoom(zoomLevel);
        //默认定位到北京经纬度
        GeoPoint gpoint=new GeoPoint(latitudeE6, longitudeE6); //默认显示北京经纬度
        mapController.animateTo(gpoint);
    }

    @Override
    protected boolean isRouteDisplayed() {

        return false;
    }
    
    @Override
    public boolean onCreateOptionsMenu(Menu menu){
        super.onCreateOptionsMenu(menu);
        menu.add(0, 0, 0, "街道");
        menu.add(0, 1, 0, "交通");
        menu.add(0, 2, 0, "卫星");
        return true;
    }
    
    @Override
    public boolean onOptionsItemSelected(MenuItem item){
         super.onOptionsItemSelected(item);
         switch(item.getItemId()){
         case 0:
             //显示街道图
             mapView.setStreetView(true); 
             mapView.setTraffic(false);
             mapView.setSatellite(false);
             break;
         case 1:
            //显示交通图
             mapView.setStreetView(false); 
             mapView.setTraffic(true);
             mapView.setSatellite(false);
             break;
         case 2:
            //显示卫星图
             mapView.setStreetView(false); 
             mapView.setTraffic(false);
             mapView.setSatellite(true);
             break;
         default:break;
         }
         return true;
    }
    
    //根据地位API获得当前经纬度并返回GeoPoint对象,提供与地图API
    private GeoPoint getCurrentGeoPoint(){
        LocationManager locationManager=(LocationManager)getSystemService(Context.LOCATION_SERVICE);
        Location location=locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
        return new GeoPoint((int)(location.getLatitude()*1e6),(int)(location.getLongitude()*1e6));
    }
    
}


当然,我们还必须使用地位API,根据手机当前位置获得经纬度,然后在地图中显示。

注意,我们可以把我们手机默认语言设置为中文,这样显示路线的时候才会是中文

运行程序如图:






google map api包中最重要的几个类。



1、MapActivity:这个类是用于显示Map的Activity类,它需要连接底层网络。



2、MapView:是用于显示地图的View组件,它必须和MapActivity配合使用。



3、MapController:用于控制地图的移动。



4、Overlay:这是一个可显示于地图之上的可绘制的对象。

5、GeoPoint:一个包含经纬度位置的对象。






Android Location API 关于定位功能的比较重要的类:



1、LocationManager:本类提供访问定位服务的功能,也提供获取最佳定位提供者的功能。另外,临近警报功能。



2、LocationProvider:该类是定位提供者的抽象类。定位提供者具备周期性报告设备地理位置的功能。



3、LocationListener:提供定位信息发生改变时的回调功能。必须事先在定位管理器中注册监听器对象。



4、Criteria:该类使得应用能够通过在LocationProvider中设置的属性来选择合适的定位提供者。


那么怎么获得本机的经纬度呢?我们可以使用GPS传感器,
分享到:
评论

相关推荐

    GoogleMap谷歌地图demo

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

    GoogleMap控件下载

    GoogleMap控件的一大亮点是开源,这意味着它的源代码对公众开放,开发者可以根据项目需求对其进行定制和扩展。开源社区的参与使得控件不断优化,增加了丰富的功能和插件支持,同时也确保了其在不同环境下的兼容性和...

    google map应用实例

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

    谷歌地图GoogleMap

    一、Google Map API基础 Google Map API的使用首先需要在Google Cloud Platform上注册并获取API密钥,这个密钥用于验证应用程序的身份,防止滥用。API的调用通常包括JavaScript API、Static Maps API以及Directions...

    google map v2 Demo

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

    Ext Google Map 简易开发框架

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

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

    总结起来,"稻歌Google Map截获器V1.1版安装程序"是一个帮助用户获取Google Maps卫星图像的工具,适用于需要离线使用卫星图像或进行特定地理分析的场景。它需要用户具备一定的GIS基础知识,同时也提醒我们在使用此类...

    Google map 离线调试

    在IT行业中,Google Map是一个广泛使用的在线地图服务,它提供了丰富的地理位置信息,包括路线规划、卫星图像、街景视图等功能。然而,在某些情况下,如网络环境不稳定或无网络连接时,离线调试Google Map就显得尤为...

    手机地图-GoogleMap(For S60第三版)

    GoogleMap作为全球知名的在线地图服务,其手机版在移动设备上同样表现出色,尤其针对S60第三版手机用户,这款应用更是备受推崇。本文将深入探讨GoogleMap在手机上的功能特性、使用体验以及它如何在S60平台上发挥效能...

    Google Map MarkerCluster使用簡介

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

    android google map 应用

    在Android布局文件中添加MapView组件,通过设置API密钥和初始化GoogleMap对象,可以实现在应用中展示地图。同时,可以通过调整Zoom级别来控制地图的缩放程度,使用CameraPosition和CameraUpdateFactory来改变视图...

    googlemap buddy 地图截取工具,以前的ripper不好用了

    本文将围绕“GoogleMap Buddy”这一工具,深入探讨其功能、使用方法以及与同类工具的对比,旨在帮助用户更好地理解和运用这一强大的地图抓取软件。 GoogleMap Buddy是一款专为地图截图设计的实用工具,尤其适合那些...

    GoogleMap开发源码

    对于"GoogleMap开发源码"这个主题,我们可以深入探讨以下几个核心知识点: 1. **Google Maps API**:Google Maps提供JavaScript API、Android API和iOS SDK等,允许开发者在网页、移动应用上显示地图、获取位置信息...

    基于Google Map API的简单地图

    在IT行业中,Google Map API是一个强大的工具,它允许开发者集成地图功能到他们的应用程序中...Google Map API的强大和灵活性使其成为开发地图应用的首选工具,无论是简单的展示还是复杂的地理信息系统,都能轻松应对。

    C++调用GOOGLEMAP代码

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

    google map api开发源代码

    Google Map API是一个强大的工具,允许开发者在网页或应用程序中集成地图功能,进行各种定制和交互。这个源代码压缩包提供了一种实现Google Map API二次开发的实例,对于想要深入理解和应用这一技术的人来说非常有...

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

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

    轨迹记录 android google map 应用

    4. **地图初始化**:在Activity或Fragment中创建GoogleMap对象,通过setMapType、setMyLocationEnabled等方法设置地图样式和显示用户位置。 5. **轨迹记录**:使用LocationManager和LocationListener监听位置变化,...

    GoogleMap定位系统、与Webservice连接

    GoogleMap定位系统是Google提供的一项服务,允许开发者集成地图功能到他们的应用中。它不仅提供了基本的地图展示,还能实现定位、导航、路线规划等功能。通过集成Google Maps API,开发者可以获取用户的位置信息,...

    稻歌Google Map截获器v2.2

    【稻歌Google Map截获器v2.2】是一款专门针对Google Map的高效地图截取工具,它允许用户轻松地捕获地图上的...总之,稻歌Google Map截获器v2.2以其便捷性和功能性,为需要大量地图数据的用户提供了一种高效解决方案。

Global site tag (gtag.js) - Google Analytics