首页 > 代码库 > 【控件】给地图添加一个简单的比例尺条
【控件】给地图添加一个简单的比例尺条
ArcGIS API for Android 10.2.3暂时没有直接提供显示比例尺条的功能,但是又必须要用肿么办呢?自己动手丰衣足食!以一个简单的例子介绍一下如何给地图添加一个简单的比例尺条。
一、目标
在屏幕下方添加一个长2cm的比例尺条,实时显示地图当前比例尺,随底图颜色的改变而改变,并动态调整其位置。
二、逻辑
1、两个TextView:一个用于显示获取到比例尺,一个用于显示一个2cm的比例尺条
2、2cm比例尺条:1dp=0.00625英寸=0.015875 厘米,理论上不同品牌的手机这个比例是不变的,但是实际上是不太一样的,根据实际情况微调;
3、通过改变TextView的字体颜色和背景达到随底图颜色变化的目的;
4、将比例尺和下方的result界面置于同一个LinearLayout中,这样就不用担心比例尺条会被下方窗口遮盖。
三、代码
1、布局层次
<LinearLayout android:id="@+id/layout_scale_detail" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_alignParentLeft="true" android:orientation="vertical" android:visibility="visible" > <RelativeLayout android:id="@+id/layout_scale" android:layout_width="wrap_content" android:layout_height="50dp" android:paddingBottom="5dp" android:paddingLeft="5dp" > <TextView android:id="@+id/txtScaleBar" android:layout_width="115dp" android:layout_height="10dp" android:layout_alignParentBottom="true" android:layout_alignParentLeft="true" android:background="@drawable/scale_06_dark" /> <TextView android:id="@+id/txtScale" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_centerVertical="true" android:text="2cm" android:textSize="15sp" /> </RelativeLayout> <LinearLayout android:id="@+id/layout_detailboard" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@drawable/listbackground_blue" android:orientation="horizontal" android:visibility="gone" > </LinearLayout> </LinearLayout>
2、格式化比例尺并将单位转换为cm/m,其中若比例尺条为2cm,则分母除以50doubleFormat = new DecimalFormat("0"); txtScale.setText(doubleFormat.format(mMapView.getScale() / 50)+ "米");
3、动态控制比例尺颜色和背景txtScale.setTextColor(android.graphics.Color.WHITE); txtScaleBar.setBackground(getResources().getDrawable(R.drawable.scale_06_light));
四、讨论
1、问题关键在于如何在自己手机屏幕上定义一条2cm的比例尺条,建议百度一下px、dp、dip、sp、in、cm相关知识;
2、该实例比较简单,但实用性很强,可用于简单量测,实测精度在1米左右;
3、顺便吐个槽:百度地图那种比例尺条随地图缩放长度不断变化,看着很炫,但是基本什么用。
4、更多参考:
http://blog.csdn.net/xiaanming/article/details/11821523
http://stackoverflow.com/questions/23303823/android-uses-dp-why-not-cm-mm
以上谨代表个人意见,抛砖引玉,代码有写作不规范的地方,接受走过的路过的直接拍砖斧正。