package com.baidu.mapapi.demo;
import java.util.ArrayList;
import java.util.List;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Point;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup.LayoutParams;
import android.widget.Toast;
import com.baidu.mapapi.*;
public class ItemizedOverlayDemo extends MapActivity {
static View mPopView = null; // 点击mark时弹出的气泡View
static MapView mMapView = null;
int iZoom = 0;
OverItemT overitem = null;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.mapviewdemo);
BMapApiDemoApp app = (BMapApiDemoApp)this.getApplication();
if (app.mBMapMan == null) {
app.mBMapMan = new BMapManager(getApplication());
app.mBMapMan.init(app.mStrKey, new BMapApiDemoApp.MyGeneralListener());
}
app.mBMapMan.start();
// 如果使用地图SDK,请初始化地图Activity
super.initMapActivity(app.mBMapMan);
mMapView = (MapView)findViewById(R.id.bmapView);
mMapView.setBuiltInZoomControls(true);
//设置在缩放动画过程中也显示overlay,默认为不绘制
mMapView.setDrawOverlayWhenZooming(true);
GeoPoint point =new GeoPoint((int)(39.90923*1e6), (int)(116.397428*1e6));
mMapView.getController().setCenter(point);
// 添加ItemizedOverlay
Drawable marker = getResources().getDrawable(R.drawable.iconmarka); //得到需要标在地图上的资源
marker.setBounds(0, 0, marker.getIntrinsicWidth(), marker
.getIntrinsicHeight()); //为maker定义位置和边界
overitem = new OverItemT(marker, this, 3);
mMapView.getOverlays().add(overitem); //添加ItemizedOverlay实例到mMapView
// 创建点击mark时的弹出泡泡
mPopView=super.getLayoutInflater().inflate(R.layout.popview, null);
mMapView.addView( mPopView,
new MapView.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT,
null, MapView.LayoutParams.TOP_LEFT));
mPopView.setVisibility(View.GONE);
iZoom = mMapView.getZoomLevel();
// mMapView.regMapViewListener(app.mBMapMan, new MKMapViewListener(){
// public void onMapMoveFinish() {
// if(iZoom != mMapView.getZoomLevel())
// {// 比例尺不一样
// iZoom = mMapView.getZoomLevel();
// if(overitem.mGeoList.size() > 0)
// overitem.mGeoList.remove(0);
// //overitem.updateOverlay();
//// Drawable marker = getResources().getDrawable(R.drawable.iconmarka); //得到需要标在地图上的资源
//// marker.setBounds(0, 0, marker.getIntrinsicWidth(), marker
//// .getIntrinsicHeight()); //为maker定义位置和边界
//// mMapView.getOverlays().add(new OverItemT(marker, ItemizedOverlayDemo.this, 3));
// }
// }
// });
}
@Override
protected void onPause() {
BMapApiDemoApp app = (BMapApiDemoApp)this.getApplication();
if(app.mBMapMan != null)
app.mBMapMan.stop();
super.onPause();
}
@Override
protected void onResume() {
BMapApiDemoApp app = (BMapApiDemoApp)this.getApplication();
app.mBMapMan.start();
super.onResume();
}
@Override
protected boolean isRouteDisplayed() {
// TODO Auto-generated method stub
return false;
}
}
class OverItemT extends ItemizedOverlay<OverlayItem> {
public List<OverlayItem> mGeoList = new ArrayList<OverlayItem>();
private Drawable marker;
private Context mContext;
private double mLat1 = 39.90923; // point1纬度
private double mLon1 = 116.357428; // point1经度
private double mLat2 = 39.90923;
private double mLon2 = 116.397428;
private double mLat3 = 39.90923;
private double mLon3 = 116.437428;
public OverItemT(Drawable marker, Context context, int count) {
super(boundCenterBottom(marker));
this.marker = marker;
this.mContext = context;
// 用给定的经纬度构造GeoPoint,单位是微度 (度 * 1E6)
GeoPoint p1 = new GeoPoint((int) (mLat1 * 1E6), (int) (mLon1 * 1E6));
GeoPoint p2 = new GeoPoint((int) (mLat2 * 1E6), (int) (mLon2 * 1E6));
// 构造OverlayItem的三个参数依次为:item的位置,标题文本,文字片段
mGeoList.add(new OverlayItem(p1, "P1", "point1"));
mGeoList.add(new OverlayItem(p2, "P2", "point2"));
if(count == 3)
{
GeoPoint p3 = new GeoPoint((int) (mLat3 * 1E6), (int) (mLon3 * 1E6));
mGeoList.add(new OverlayItem(p3, "P3", "point3"));
}
populate(); //createItem(int)方法构造item。一旦有了数据,在调用其它方法前,首先调用这个方法
}
public void updateOverlay()
{
populate();
}
@Override
public void draw(Canvas canvas, MapView mapView, boolean shadow) {
// Projection接口用于屏幕像素坐标和经纬度坐标之间的变换
Projection projection = mapView.getProjection();
for (int index = size() - 1; index >= 0; index--) { // 遍历mGeoList
OverlayItem overLayItem = getItem(index); // 得到给定索引的item
String title = overLayItem.getTitle();
// 把经纬度变换到相对于MapView左上角的屏幕像素坐标
Point point = projection.toPixels(overLayItem.getPoint(), null);
// 可在此处添加您的绘制代码
Paint paintText = new Paint();
paintText.setColor(Color.BLUE);
paintText.setTextSize(15);
canvas.drawText(title, point.x-30, point.y, paintText); // 绘制文本
}
super.draw(canvas, mapView, shadow);
//调整一个drawable边界,使得(0,0)是这个drawable底部最后一行中心的一个像素
boundCenterBottom(marker);
}
@Override
protected OverlayItem createItem(int i) {
// TODO Auto-generated method stub
return mGeoList.get(i);
}
@Override
public int size() {
// TODO Auto-generated method stub
return mGeoList.size();
}
@Override
// 处理当点击事件
protected boolean onTap(int i) {
setFocus(mGeoList.get(i));
// 更新气泡位置,并使之显示
GeoPoint pt = mGeoList.get(i).getPoint();
ItemizedOverlayDemo.mMapView.updateViewLayout( ItemizedOverlayDemo.mPopView,
new MapView.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT,
pt, MapView.LayoutParams.BOTTOM_CENTER));
ItemizedOverlayDemo.mPopView.setVisibility(View.VISIBLE);
Toast.makeText(this.mContext, mGeoList.get(i).getSnippet(),
Toast.LENGTH_SHORT).show();
return true;
}
@Override
public boolean onTap(GeoPoint arg0, MapView arg1) {
// TODO Auto-generated method stub
// 消去弹出的气泡
ItemizedOverlayDemo.mPopView.setVisibility(View.GONE);
return super.onTap(arg0, arg1);
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
BaiduMapApi_Sample_Android_1.3.3.zip (78个子文件)
BaiduMapApi_Sample_Android_1.3.3
BaiduMapApiDemo
bin
classes.dex 132KB
BMapApiDemoMain.apk 829KB
res
drawable-ldpi
pop.png 2KB
icon.png 2KB
iconmarka.png 1KB
drawable-hdpi
pop.png 2KB
icon.png 4KB
iconmarka.png 1KB
drawable
pop.png 2KB
icon.png 2KB
iconmarka.png 1KB
drawable-mdpi
pop.png 2KB
icon.png 2KB
iconmarka.png 1KB
classes
com
baidu
mapapi
demo
BMapApiDemoApp$MyGeneralListener.class 2KB
OverItemT.class 6KB
RoutePlan.class 9KB
BMapApiDemoMain.class 2KB
R$layout.class 669B
PoiSearch.class 9KB
GeoCoder$OverItemT.class 6KB
R$id.class 1KB
R$drawable.class 469B
GeoCoder.class 9KB
ItemizedOverlayDemo.class 7KB
BMapApiDemoApp.class 2KB
R$attr.class 349B
MapViewDemo.class 4KB
LocationOverlay.class 6KB
R.class 552B
BusLineSearch.class 8KB
R$string.class 506B
MyLocation.class 2KB
OfflineDemo.class 8KB
resources.ap_ 33KB
.classpath.bak 280B
res
drawable-ldpi
pop.png 1KB
icon.png 2KB
iconmarka.png 867B
drawable-hdpi
pop.png 1KB
icon.png 4KB
iconmarka.png 867B
drawable
pop.png 1KB
icon.png 3KB
iconmarka.png 867B
values
strings.xml 283B
drawable-mdpi
pop.png 1KB
icon.png 3KB
iconmarka.png 867B
layout
geocoder.xml 1KB
mylocation.xml 412B
offline.xml 2KB
popview.xml 470B
poisearch.xml 2KB
main.xml 564B
buslinesearch.xml 2KB
routeplan.xml 1KB
mapviewdemo.xml 373B
assets
default.properties 36B
gen
com
baidu
mapapi
demo
R.java 3KB
proguard.cfg 1KB
src
com
baidu
mapapi
demo
PoiSearch.java 6KB
BMapApiDemoMain.java 3KB
LocationOverlay.java 3KB
OfflineDemo.java 6KB
ItemizedOverlayDemo.java 6KB
GeoCoder.java 6KB
MyLocation.java 2KB
BusLineSearch.java 5KB
MapViewDemo.java 2KB
RoutePlan.java 6KB
BMapApiDemoApp.java 2KB
.project 851B
.classpath 380B
project.properties 361B
AndroidManifest.xml 3KB
libs
armeabi
libBMapApiEngine_v1_3_3.so 994KB
baidumapapi.jar 232KB
共 78 条
- 1
jingwen3699
- 粉丝: 855
- 资源: 47
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- TI杯大奖赛本科组+研究生组论文+源代码+PCB基于蓝牙及GSM的智能防盗系统
- (精品)工业互联网(物联网)及其应用.pdf
- 上市公司治理质量综合指数/水平2003-2023年【结果+代码】
- Python基于深度强化学习的MEC计算卸载与资源分配源码(高分项目).zip
- PTAC-C++求n以内最大的k个素数以及它们的和.rar
- 古诗15-唐朝白居易的游悟真寺
- (自适应手机端)响应式陶瓷研磨盘设备pbootcms网站模板 抛光设备网站源码.zip
- 3G直放站监控系统南向接口协议技术规范
- (精品)泵站自动化监控系统培训课件.ppt
- 基于python弹幕情感分析的直播高光时刻判断模型设计与系统实现
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
- 3
- 4
- 5
- 6
前往页