立即注册
查看: 3958|回复: 1

[原创] Android-高德地图-显示气泡框 ()

发表于 2013-5-3 16:38:59 | 显示全部楼层 |阅读模式 来自 广东省深圳市
popupView气泡框android气泡框高德地图

        现在的聊天框大多都是气泡框,气泡框长相可爱,有良好的用户体验。
        如何把气泡框应用于地图上呢?

        步骤一:首先要定义我们的气泡框布局,也就是所谓的layout
popup.xml:

[html] view plaincopyprint?

  • <?xml version="1.0" encoding="UTF-8"?>
  • <LinearLayout Android:orientation="horizontal" android:id="@+id/LinearLayoutPopup"
  •     android:background="@drawable/tip_pointer_button"
  •     android:focusable="true" android:clickable="true" android:layout_width="wrap_content"
  •     android:layout_height="wrap_content" xmlns:android="http://schemas.android.com/apk/res/android">
  •      <LinearLayout android:layout_gravity="center_vertical"
  •         android:orientation="vertical" android:id="@+id/LinearLayoutPoi"
  •         android:paddingLeft="5.0dip" android:paddingRight="5.0dip"
  •         android:layout_width="wrap_content" android:layout_height="wrap_content">
  •         <TextView android:textSize="16.0sp" android:textColor="#ff000000"
  •             android:id="@+id/location" android:layout_width="wrap_content"
  •             android:layout_height="wrap_content"
  •             android:singleLine="true" />
  •     </LinearLayout>
  • </LinearLayout>


其外观如图:




    步骤二:接着就是自定义我们的Overlay,取名为MapPointOverlay:

[java] view plaincopyprint?

  • /**
  • * 地图点图层
  • */
  • public class MapPointOverlay extends Overlay {
  •     private LayoutInflater inflater; // 布局填充器
  •     private View popUpView; // 气泡框
  •     public MapPointOverlay(Context context) {
  •         inflater = (LayoutInflater) context
  •                 .getSystemService(Context.LAYOUT_INFLATER_SERVICE); // 初始化布局填充器
  •         popUpView = inflater.inflate(R.layout.popup, null); // 初始化气泡框
  •     }
  •     @Override
  •     public void draw(Canvas canvas, MapView mapView, boolean shadow) {
  •         super.draw(canvas, mapView, shadow);
  •     }
  •     @Override
  •     public boolean onTap(final GeoPoint point, final MapView view) {
  •         if (popUpView != null) {
  •             view.reMOVeView(popUpView);
  •         }
  •         TextView textView = (TextView) popUpView.findViewById(R.id.location);
  •         String location = "纬度:" + point.getLatitudeE6() / 1.0E6 + ",经度:"
  •                 + point.getLongitudeE6() / 1.0E6;
  •         textView.setText(location);
  •         MapView.LayoutParams lp;
  •         lp = new MapView.LayoutParams(MapView.LayoutParams.WRAP_CONTENT,
  •                 MapView.LayoutParams.WRAP_CONTENT, point, 0, 0,
  •                 MapView.LayoutParams.BOTTOM_CENTER);
  •         view.addView(popUpView, lp);
  •         return super.onTap(point, view);
  •     }
  • }


   步骤三: 最后是编写MapActivity:

[java] view plaincopyprint?

  • public class MainActivity extends MapActivity {
  •     @Override
  •     protected void onCreate(Bundle savedInstanceState) {
  •         super.onCreate(savedInstanceState);
  •         setContentView(R.layout.activity_main);
  •         MapView mapView = (MapView) findViewById(R.id.main_mapView);    // 获取mapView实例
  •         MapPointOverlay overlay = new MapPointOverlay(this);            // 新建Overlay实例
  •         mapView.getOverlays().add(overlay);                             // 将Overlay添加到MapView图层上
  •     }
  • }


    另外别忘了相应的权限:

[html] view plaincopyprint?

  • <uses-permission android:name="android.permission.INTERNET"/>
  • <uses-permission android:name="android.permission.READ_PHONE_STATE"/>

   
    地图上显示气泡框的效果:



    完整的Android项目包:http://download.csdn.net/detail/czjuttsw/5217774

发表于 2016-9-13 11:14:00 | 显示全部楼层 来自 四川省成都市
正在学习  有帮助  谢谢
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

合作/建议

TEL: 19168984579

工作时间:
周一到周五 9:00-11:30 13:30-19:30
  • 扫一扫关注公众号
  • 扫一扫打开小程序
Copyright © 2013-2024 一牛网 版权所有 All Rights Reserved. 帮助中心|隐私声明|联系我们|手机版|粤ICP备13053961号|营业执照|EDI证
在本版发帖搜索
扫一扫添加微信客服
QQ客服返回顶部
快速回复 返回顶部 返回列表