time 
设为首页】【收藏本站
当前位置: 主页 > 电脑网络 > 操作系统 > 嵌入式 > Android > Android百度地图开发教程(三)实现比例尺功能和缩放功能

Android百度地图开发教程(三)实现比例尺功能和缩放功能

时间:2014-01-22 15:29 点击:2268次 字体:[ ]




 先看下项目工程结构

Android百度地图开发教程(三)实现比例尺功能和缩放功能_www.fengfly.com


ScaleView是比例尺控件,ZoomControlView是缩放控件,MainActivity就是我们的主界面了

 


先看下ZoomControlView类,代码如下

 

  1. package com.example.baidumapdemo;  
  2.  
  3. import com.baidu.mapapi.map.MapView;  
  4.  
  5. import android.content.Context;  
  6. import android.util.AttributeSet;  
  7. import android.view.LayoutInflater;  
  8. import android.view.View;  
  9. import android.widget.Button;  
  10. import android.widget.RelativeLayout;  
  11. import android.view.View.OnClickListener;  
  12.  
  13. public class ZoomControlView extends RelativeLayout implements OnClickListener{  
  14.     private Button mButtonZoomin;  
  15.     private Button mButtonZoomout;  
  16.     private MapView mapView;  
  17.     private int maxZoomLevel;  
  18.     private int minZoomLevel;  
  19.       
  20.     public ZoomControlView(Context context, AttributeSet attrs) {  
  21.         this(context, attrs, 0);  
  22.     }  
  23.  
  24.     public ZoomControlView(Context context, AttributeSet attrs, int defStyle) {  
  25.         super(context, attrs, defStyle);  
  26.         init();  
  27.     }  
  28.  
  29.       
  30.     private void init() {  
  31.         View view = LayoutInflater.from(getContext()).inflate(R.layout.zoom_controls_layout, null);  
  32.         mButtonZoomin = (Button) view.findViewById(R.id.zoomin);  
  33.         mButtonZoomout = (Button) view.findViewById(R.id.zoomout);  
  34.         mButtonZoomin.setOnClickListener(this);  
  35.         mButtonZoomout.setOnClickListener(this);  
  36.         addView(view);  
  37.     }  
  38.  
  39.     @Override 
  40.     public void onClick(View v) {  
  41.         if(mapView == null){  
  42.             throw new NullPointerException("you can call setMapView(MapView mapView) at first");  
  43.         }  
  44.         switch (v.getId()) {  
  45.         case R.id.zoomin:{  
  46.             mapView.getController().zoomIn();  
  47.             break;  
  48.         }  
  49.         case R.id.zoomout:{  
  50.             mapView.getController().zoomOut();  
  51.             break;  
  52.         }  
  53.         }  
  54.     }  
  55.  
  56.     /**  
  57.      * 与MapView设置关联  
  58.      * @param mapView  
  59.      */ 
  60.     public void setMapView(MapView mapView) {  
  61.         this.mapView = mapView;  
  62.         // 获取最大的缩放级别  
  63.         maxZoomLevel = mapView.getMaxZoomLevel();  
  64.         // 获取最大的缩放级别  
  65.         minZoomLevel = mapView.getMinZoomLevel();  
  66.     }  
  67.       
  68.       
  69.     /**  
  70.      * 根据MapView的缩放级别更新缩放按钮的状态,当达到最大缩放级别,设置mButtonZoomin  
  71.      * 为不能点击,反之设置mButtonZoomout  
  72.      * @param level  
  73.      */ 
  74.     public void refreshZoomButtonStatus(int level){  
  75.         if(mapView == null){  
  76.             throw new NullPointerException("you can call setMapView(MapView mapView) at first");  
  77.         }  
  78.         if(level > minZoomLevel && level < maxZoomLevel){  
  79.             if(!mButtonZoomout.isEnabled()){  
  80.                 mButtonZoomout.setEnabled(true);  
  81.             }  
  82.             if(!mButtonZoomin.isEnabled()){   
  83.                 mButtonZoomin.setEnabled(true);  
  84.             }  
  85.         }  
  86.         else if(level == minZoomLevel ){  
  87.             mButtonZoomout.setEnabled(false);  
  88.         }  
  89.         else if(level == maxZoomLevel){  
  90.             mButtonZoomin.setEnabled(false);  
  91.         }  
  92.     }  
  93.  



本文地址 : http://www.fengfly.com/plus/view-214535-1.html
标签: Android
------分隔线----------------------------
最新评论 查看所有评论
发表评论 查看所有评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
验证码: