android高德地图气泡,[置顶] Android-高德地图-显示气泡框

本文介绍了如何将可爱的气泡框应用于地图上,提升用户体验。首先定义气泡框布局,然后创建自定义Overlay类MapPointOverlay,接着在MapActivity中添加Overlay实例,最终实现地图点击时显示包含地理位置信息的气泡框。
摘要由CSDN通过智能技术生成

现在的聊天框大多都是气泡框,气泡框长相可爱,有良好的用户体验。

f9e30778846bd07c8dd4b7914f6f616a.png

如何把气泡框应用于地图上呢?

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

popup.xml:

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">

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">

android:id="@+id/location" android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:singleLine="true" />

其外观如图:

5c5f5f49c4a8078fad871b1c5ca3bd02.png

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

/**

* 地图点图层

*/

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:

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图层上

}

}

另外别忘了相应的权限:

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

dd0b72108761c7ebca50b06e443cf433.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值