android地图开发放大效果,概述 | Android 地图 SDK | 开发支持 | 四维地图开放平台...

地图展示

(完整代码详见相关资源下载中示例工程的 MapViewActivity.java)

// 自定义地图视图

private DemoMapView mDemoMapView;

// 地图渲染控制类

private MapRenderer mRenderer;

/**

* 显示地图,

*/

@Override

protected void onCreate (Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.mapview);

// 初始化地图

initMap();

}

/**

* 初始化地图

*/

private void initMap () {

try {

// 加载地图

mDemoMapView = (DemoMapView) findViewById(R.id.glView_mapview);

mDemoMapView.setHandler(handler);

} catch (Exception e) {

e.printStackTrace();

new MessageBox(this, false).showDialog(e.getMessage());

}

}

/*

* 自定义地图视图,所有与地图相关操作均可自定义实现

*/

public class DemoMapView extends MapView {

// 初始化放大图绘制使用的view

// 开始模拟导航

// 结束模拟导航

// 绘制放大图

// 绘制指定Maneuver的箭头

// 绘制摄像头

// 绘制出多条路线

// 绘制单条路线

// 设置路线是否开启Tmc模式

// 将路线显示在地图上

// 设置目的地

// 开始算路

// 控制是否锁车

// 获取车当前的位置

// 设置当前车的角度,用于导航时更新车的角度

// 在地图指定位置显示一个POI的信息

// 将指定的路线隐藏

// 删除所有路线

// 地图放大操作

// 地图缩小操作

// ……

}

覆盖物

(完整代码详见相关资源下载中示例工程的 OverlayActivity.java)

// 打点

Point point = new Point(11638780, 3998076); // 创建点对象

CircleOverlay circle = new CircleOverlay(point, 0f); // 创建以point对象为中心的一个点

mRenderer.addOverlay(circle);//将点绘制在地图上

// 气泡

Vector2D pivot = new Vector2D(0.5f, 0.0f); // 设置气泡在点上的偏移量

Annotation an = new Annotation(1, point, 1101, pivot); // 在点point上创建一个偏移量为pivot的气泡

CalloutStyle calloutStyle = an.getCalloutStyle(); // 获取气泡样式

calloutStyle.leftIcon = 0; // 气泡左侧的图标为空

calloutStyle.rightIcon = 0; // 气泡右侧的图标为空

an.setCalloutStyle(calloutStyle); // 为气泡设置显示样式

an.setTitle("自定义POI点"); // 为气泡设置显示标题内容

mRenderer.addAnnotation(an); // 在地图上添加气泡

an.showCallout(true); // 设置气泡可显示

POI搜索

(完整代码详见相关资源下载中示例工程的 NewSearchActivity.java)

/**

* 初始化需要使用的引擎 这里主要使用了POI搜索引擎和绘图引擎

*/

private void init () {

……

// 初始化POI搜索引擎

mPoiSearch = new PoiSearch();

// 设置搜索模式:

// onlineOnly在线搜索 offlineOnly离线搜索

mPoiSearch.setDataPreference(DataPreference.onlineOnly);

// 设置搜索城市id

mPoiSearch.setCity(cityName);

// 设置搜索中心点

mPoiSearch.setCenter(mCenter); // 注册搜索监听回调方法

// 地图上打点

private void drawAnnotation() {

mAnnotations.clear();

Vector2DF vec = new Vector2DF(0.9f, 0.5f);

Point point = new Point();

int zlevel = 100;

Bitmap icon = BitmapFactory.decodeResource(getResources(), R.drawable.gas);

for (int i = 0; i < mPoiItems.size(); i++) {

point.x = mPoiItems.get(i).position.x;

point.y = mPoiItems.get(i).position.y;

CustomAnnotation annot = new CustomAnnotation(zlevel, point, i, vec, icon);

annot.setTitle(mPoiItems.get(i).name);

mAnnotations.add(annot);

}

for (int i = 0; i < mAnnotations.size(); i++) {

mDemoMapView.getMapRenderer().addAnnotation(mAnnotations.get(i));

}

if (mPoiItems.size() > 0) {

// 移动地图中心

mDemoMapView.setWorldCenter(mPoiItems.get(0).position);

}

}

//删除地图上打的点

private void clearAnnotation() {

for (int i = 0; i < mAnnotations.size(); i++) {

mDemoMapView.getMapRenderer().removeAnnotation(mAnnotations.get(i));

}

}

离线数据

// 初始化数据,添加数据加载回调

OfflineDataStoreManager.getInstance().initData(this);

// 数据加载回调

@Override

public void onDataSuccess(DatastoreItem[] datastoreItems) {

// 数据加载成功

progressBar.setVisibility(View.GONE);

this.datastoreItems = datastoreItems;

if (datastoreItems != null) {

// 设置listView数据源

DownloadAdapter downloadAdapter = new DownloadAdapter(this, datastoreItems);

mListView.setAdapter(downloadAdapter);

}

}

@Override

public void onDataFailure() {

//数据加载失败

progressBar.setVisibility(View.GONE);

Toast.makeText(this, "refresh faile", Toast.LENGTH_SHORT).show();

}

@Override

public void onDataCancle() {

// 数据加载取消

progressBar.setVisibility(View.GONE);

Toast.makeText(this, "refresh cancel", Toast.LENGTH_SHORT).show();

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值