标签:百度地图api zoomcontrolview 放大缩小控件 自定义
接着上一篇:上一篇博客讲的是用百度地图的API制作 Marker 和 自定义的弹出框,这一篇则是讲对于百度地图的放大缩小控制:
老规矩先来张截图:
接下来一大波代码来袭。。。
package com.jsbtclient.cusViews;
import com.baidu.mapapi.map.BaiduMap;
import com.baidu.mapapi.map.MapStatus;
import com.baidu.mapapi.map.MapStatusUpdateFactory;
import com.baidu.mapapi.map.MapView;
import com.example.jsbtclient.R;
import android.content.Context;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.ImageView;
import android.widget.LinearLayout;
public class ZoomControlView extends LinearLayout implements View.OnClickListener{
private MapView mapView;
private BaiduMap baiduMap;//百度地图对象控制器
private MapStatus mapStatus;//百度地图状态
private ImageView zoomOut, zoomIn;
private float MaxLevel;
private float MinLevel;
public ZoomControlView(Context context) {
super(context);
initZoomControlView(context);
}
public ZoomControlView(Context context, AttributeSet attr) {
super(context, attr);
initZoomControlView(context);
}
private void initZoomControlView(Context context) {
LayoutInflater inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View view = inflater.inflate(R.layout.zoom_control_layout, this);
zoomIn = (ImageView) view.findViewById(R.id.zoom_control_plus);
zoomOut = (ImageView) view.findViewById(R.id.zoom_control_reduce);
zoomIn.setOnClickListener(this);
zoomOut.setOnClickListener(this);
}
/**
* set {@link MapView}
*/
public void setMapView(MapView mapView)
{
if(mapView != null)
{
this.mapView = mapView;
baiduMap = mapView.getMap();
mapStatus = baiduMap.getMapStatus();
MaxLevel = baiduMap.getMaxZoomLevel();
MinLevel = baiduMap.getMinZoomLevel();
}else{
throw new NullPointerException("you should call setMapView(MapView mapView) at first");
}
}
@Override
public void onClick(View view) {
switch (view.getId()) {
case R.id.zoom_control_plus:
baiduMap.setMapStatus(MapStatusUpdateFactory.zoomIn());//放大
break;
case R.id.zoom_control_reduce:
baiduMap.setMapStatus(MapStatusUpdateFactory.zoomOut());//缩小
break;
default:
break;
}
mapStatus = mapView.getMap().getMapStatus();
refreshZoomControlView();
}
private void refreshZoomControlView() {
float zoom = mapStatus.zoom;
if(zoom> MinLevel && zoom< MaxLevel)
{
if(!zoomIn.isEnabled()){
zoomIn.setEnabled(true); //设置为可点击
}
if(!zoomOut.isEnabled()){
zoomOut.setEnabled(true);
}
}else if(zoom == MinLevel)
{
zoomOut.setEnabled(false);
zoomIn.setEnabled(true);
}else
{
zoomIn.setEnabled(false);
zoomOut.setEnabled(true);
}
}
}
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<ImageView
android:id="@+id/zoom_control_plus"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_weight="1"
android:contentDescription="@string/app_name"
android:src="@drawable/zoomin_selector" />
<ImageView
android:id="@+id/zoom_control_reduce"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_weight="1"
android:contentDescription="@string/app_name"
android:src="@drawable/zoomout_selector" />
</LinearLayout><?xml version="1.0" encoding="UTF-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" android:drawable="@drawable/zoomin_pressed"></item>
<item android:state_enabled="false" android:drawable="@drawable/zoomin_pressed"></item>
<item android:drawable="@drawable/zoomin_normal"></item>
</selector>
<?xml version="1.0" encoding="UTF-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" android:drawable="@drawable/zoomout_pressed"></item>
<item android:state_enabled="false" android:drawable="@drawable/zoomout_pressed"></item>
<item android:drawable="@drawable/zoomout_normal"></item>
</selector>zoomControlView = (ZoomControlView) view.findViewById(R.id.map_zoomcontrol); zoomControlView.setMapView(mapView); mapView.showZoomControls(false);//隐藏原生的控制按钮
百度地图API制作自定义的放大缩小控件ZoomControlView
标签:百度地图api zoomcontrolview 放大缩小控件 自定义
原文地址:http://blog.csdn.net/u010911576/article/details/46463483