wenquan125

导航

百度地图之二百度地图覆盖物(老罗视频笔记整理)

接上篇 百度地图之一百度地图搭建开发环境(老罗视频笔记整理)

显示交通地图

//显示交通地图
mapView.setTraffic(true);

显示卫星地图

 //显示卫星地图
 mapView.setSatellite(true);

 

 

如何给地图覆盖物概述:

所有叠加或覆盖到地图的内容,我们统称为地图覆盖物。如标注、矢量图象元素(包括:折线和多变形和圆)、定位图标等覆盖物拥有自己的地理坐标,当您拖动或缩放地图时,他们会相应的移动。

地图API提供了如下几种覆盖物:

Overlay:覆盖物的抽象基类,所有的覆盖物均继承此类的方法,实现用户自定义图层显示。

MyLoactionOverlay:一个负责显示用户当前位置的Overlay。

ItemizedOverlay<Item extends OverlayItem>: Overlay的一个基类,包含了一个OverlayItem列表,相当于一组分条Overlay,通过继承此类,将一组兴趣点显示在地图上。

PoiOverlay:本地搜索图层,提供某一特定地区的位置搜索服务,比如在北京市搜索“公园”,通过此公园显示在地图上。

RouteOverlay:步行、驾车导航线路图层,将步行、驾车出行方案的路线及关键点显示在地图上。

TransitOverlay:公交换乘线路图层,将某一特定地区的公交出行方案的路线及换乘位置显示在地图上;

 

实战案例之一:演示地图覆盖物的描述

复制代码
package com.android.android_baidu_myoverlay;

import com.android.android_baidu_myoverlay.R;
import com.baidu.mapapi.BMapManager;
import com.baidu.mapapi.GeoPoint;
import com.baidu.mapapi.MKGeneralListener;
import com.baidu.mapapi.MapActivity;
import com.baidu.mapapi.MapController;
import com.baidu.mapapi.MapView;
import com.baidu.mapapi.Overlay;

import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.Point;
import android.os.Bundle;
import android.widget.Toast;

public class MainActivity extends MapActivity {

    //添加百度地图的相关控件
    private MapView mapView;
    //加载地图的引擎
    private BMapManager bMapManager;
    //百度地图的key
    private String KeyString = "8C426377B3526B6BF3672C9BA3BB544D1E8289CD";
    //在百度地图上添加一些控件,比如是放大或者缩小的控件
    private MapController mapController;
    
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        mapView = (MapView) this.findViewById(R.id.bmapView);
        bMapManager = new BMapManager(MainActivity.this    );
        //必须要加载key
        bMapManager.init(KeyString, new MKGeneralListener() {
            
            public void onGetPermissionState(int arg0) {
                if(arg0==300){
                    Toast.makeText(MainActivity.this, "输入的key有错,请核实!!", 1).show();
                }
            }
            
            public void onGetNetworkState(int arg0) {
                
            }
        });
        this.initMapActivity(bMapManager);
        //表示可以设置缩放功能
        mapView.setBuiltInZoomControls(true);
        mapController = mapView.getController();
        mapController.setZoom(12);
        mapView.getOverlays().add(new MyOverlay());
       
    }
    
    public class MyOverlay extends Overlay{
        //构建在地图上的一个点
        GeoPoint geoPoint = new GeoPoint((int)(39.915*1E6),(int)(116.404*1E6));
        //声明一个画笔的工具
        private Paint paint = new Paint();
        
        @Override
        public void draw(Canvas arg0, MapView arg1, boolean arg2) {
            super.draw(arg0, arg1, arg2);
            Point point = mapView.getProjection().toPixels(geoPoint, null);
            arg0.drawText("*这里是天安门", point.x, point.y, paint);
        }
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        if(bMapManager!=null){
            bMapManager.destroy();
            bMapManager = null;
        }
    }
    
    @Override
    protected void onResume() {
        super.onResume();
        if(bMapManager!=null){
            bMapManager.start();
        }
    }
    
    @Override
    protected void onPause() {
        // TODO Auto-generated method stub
        super.onPause();
        if(bMapManager!=null){
            bMapManager.stop();
        }
    }
    
    @Override
    protected boolean isRouteDisplayed() {
        // TODO Auto-generated method stub
        return false;
    }
}
复制代码

 

posted on 2012-11-19 18:24  wenquan125  阅读(727)  评论(0编辑  收藏  举报