Android 百度地图点击弹出信息框

时间:2025-07-09

Android百度地图点击弹出信息框

如图:

我是在百度的demo上改的主要代码:

package com.baidu.mapapi.demo;

import java.util.ArrayList;

import java.util.List;

import android.content.Context;

import android.content.Intent;

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 http://youtParams;

import android.widget.ImageView;

import android.widget.TextView;

import android.widget.Toast;

import com.baidu.mapapi.GeoPoint;

import com.baidu.mapapi.ItemizedOverlay;

import com.baidu.mapapi.MapActivity;

import com.baidu.mapapi.MapView;

import com.baidu.mapapi.OverlayItem;

import com.baidu.mapapi.Projection;

public class ItemizedOverlayDemo extends MapActivity {

static MapView mMapView = null;

public View popView;

private double mLat1 = 31.257277; // point1纬度

private double mLon1 = 121.501347; // point1经度

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(http://yout.mapviewdemo);

String temp = "测试信息";

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) (mLat1 * 1e6), (int) (mLon1 * 1e6));

mMapView.getController().setCenter(point);

mMapView.getController().setZoom(17);

// 添加ItemizedOverlay

Drawable marker = getResources().getDrawable(R.drawable.iconmarka); // 得到需要标在地图上的资源

marker.setBounds(0, 0, marker.getIntrinsicWidth(),

marker.getIntrinsicHeight()); // 为maker定义位置和边界

mMapView.getOverlays().add(

new OverItemT(marker, this, mLat1, mLon1, temp)); // 添加ItemizedOverlay实例到mMapView initPopview();

}

@Override

protected void onPause() {

BMapApiDemoApp app = (BMapApiDemoApp) this.getApplication();

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;

}

private void initPopview() {

popView = super.getLayoutInflater().inflate(http://yout.popview, null);

mMapView.addView(popView, new http://youtParams(

http://youtParams.WRAP_CONTENT,

http://youtParams.WRAP_CONTENT, null,

http://youtParams.TOP_LEFT));

// 由于气泡的尾巴是在下边居中的,因此要设置成http://youtParams.BOTTOM_CENTER. // 这里没有给GeoPoint,在onFocusChangeListener中设置

// views.add(popView);

popView.setVisibility(View.GONE);

}

}

class OverItemT extends ItemizedOverlay<OverlayItem> {

private List<OverlayItem> mGeoList = new ArrayList<OverlayItem>();

private Drawable marker;

private ItemizedOverlayDemo mContext;

private TextView textView1;

private TextView textView2;

public OverItemT(Drawable marker, Context context, double mLat1,

double mLon1, String mer_name) {

super(boundCenterBottom(marker));

this.marker = marker;

this.mContext = (ItemizedOverlayDemo) context;

// 用给定的经纬度构造GeoPoint,单位是微度 (度 * 1E6)

GeoPoint p1 = new GeoPoint((int) (mLat1 * 1E6), (int) (mLon1 * 1E6));

// 构造OverlayItem的三个参数依次为:item的位置,标题文本,文字片段

mGeoList.add(new OverlayItem(p1, "", mer_name));

populate(); // createItem(int)方法构造item。一旦有了数据,在调用其它方法前,首先调用这个方法 }

@Override

// 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();

}

// 处理当点击事件

protected boolean onTap(int i) {

setFocus(mGeoList.get(i));

http://youtParams geoLP = (http://youtParams) mContext.popView

.getLayoutParams();

GeoPoint pt = mGeoList.get(i).getPoi …… 此处隐藏:3345字,全部文档内容请下载后查看。喜欢就下载吧 ……

Android 百度地图点击弹出信息框.doc 将本文的Word文档下载到电脑

    精彩图片

    热门精选

    大家正在看

    × 游客快捷下载通道(下载后可以自由复制和排版)

    限时特价:7 元/份 原价:20元

    支付方式:

    开通VIP包月会员 特价:29元/月

    注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
    微信:fanwen365 QQ:370150219