地图控件原创
4人赞赏了该文章
2,181次浏览
编辑于2023年02月02日 17:21:37
本文章,介绍如何使用地图控件。
一、设计
在设计器中拖入地图控件,按钮,文本框。
注册插件
注册一个移动端插件,准备为接下来的步骤添加业务逻辑。
package kd.ecos.demo; import kd.bos.bill.events.LocateEvent; import kd.bos.ext.form.control.MapControl; import kd.bos.ext.form.control.events.MapSelectEvent; import kd.bos.ext.form.control.events.MapSelectListener; import kd.bos.ext.form.dto.MapSelectPointOption; import kd.bos.form.ClientActions; import kd.bos.form.IClientViewProxy; import kd.bos.form.control.Button; import kd.bos.form.plugin.AbstractMobFormPlugin; import java.math.BigDecimal; import java.util.*; public class DemoMobLocationPlugin extends AbstractMobFormPlugin implements MapSelectListener { @Override public void registerListener(EventObject e) { super.registerListener(e); } @Override public void select(MapSelectEvent evt) { } @Override public void click(EventObject evt) { } }
二、定位到当前位置
苍穹的地图控件默认展示北京。
定位当前位置
所以,为了让地图控件显示当前我们所在的位置,需要编写代码,调用地图控件的 getAddress方法。
这里用一个按钮作为触发条件,当点击到按钮时,定位当前位置,并且把位置信息存到文本控件中。
@Override public void registerListener(EventObject e) { super.registerListener(e); addClickListeners("kdec_get_loaction"); MapControl mapControl = getControl("kdec_mapcontrolap"); mapControl.addSelectListener(this); } @Override public void click(EventObject evt) { super.click(evt); if (evt.getSource() instanceof Button) { switch (((Button) evt.getSource()).getKey()) { case "kdec_get_loaction": // 获取当前定位 getPageCache().put("selectLocate", "ture"); MapControl mapControl = getControl("kdec_mapcontrolap"); mapControl.getAddress(); break; } } } @Override public void select(MapSelectEvent evt) { Map<String, Object> map = evt.getPoint(); // 地图控件的 selectAddress,getAddress方法都会调用这个回调,为防止死循环,需要做一个标志位判断 if ("ture".equals(getPageCache().get("selectLocate"))) { getPageCache().remove("selectLocate"); Map point = (Map) map.get("point"); // evt中获取控件 MapControl mapControl = (MapControl) evt.getSource(); MapSelectPointOption mapSelectPointOption = new MapSelectPointOption(); // 经度 mapSelectPointOption.setLng(((BigDecimal) point.get("lng")).doubleValue()); // 维度 mapSelectPointOption.setLat(((BigDecimal) point.get("lat")).doubleValue()); mapControl.selectPoint(mapSelectPointOption); } getModel().setValue("kdec_loaction", map.get("address")); }
效果
赞 4
4人点赞
还没有人点赞,快来当第一个点赞的人吧!
打赏
0人打赏
还没有人打赏,快来当第一个打赏的人吧!