分享给大家一篇技术文章,还有很多不足之处,欢迎吐槽!期待各位android爱好者,加入android交流群:278744577,加群请验证:qy88,共同探讨!

如图:

我是在百度的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 android.view.ViewGroup.LayoutParams;

import android.widget.ImageView;

import android.widget.TextView;

import android.widget.Toast;

import com.baidu.mapapi.BMapManager;

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(R.layout.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();

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;

}

private void initPopview() {

popView = super.getLayoutInflater().inflate(R.layout.popview, null);

mMapView.addView(popView, new MapView.LayoutParams(

MapView.LayoutParams.WRAP_CONTENT,

MapView.LayoutParams.WRAP_CONTENT, null,

MapView.LayoutParams.TOP_LEFT));

// 由于气泡的尾巴是在下边居中的,因此要设置成MapView.LayoutParams.BOTTOM_CENTER.

// 这里没有给GeoPoint,在onFocusChangeListener中设置

// views.add(popView);

popView.setVisibility(View.GONE);

}

}

class OverItemT extends ItemizedOverlay {

private List mGeoList = new ArrayList();

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

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

}

// 处理当点击事件

protected boolean onTap(int i) {

setFocus(mGeoList.get(i));

MapView.LayoutParams geoLP = (MapView.LayoutParams) mContext.popView

.getLayoutParams();

GeoPoint pt = mGeoList.get(i).getPoint();

mContext.mMapView.updateViewLayout(mContext.popView,

new MapView.LayoutParams(LayoutParams.WRAP_CONTENT,

LayoutParams.WRAP_CONTENT, pt,

MapView.LayoutParams.BOTTOM_CENTER));

mContext.popView.setVisibility(View.VISIBLE);

textView1 = (TextView) mContext.findViewById(R.id.map_bubbleTitle);

textView2 = (TextView) mContext.findViewById(R.id.map_bubbleText);

textView1.setText("提示信息");

textView2.setText(mGeoList.get(i).getSnippet());

ImageView imageView = (ImageView) mContext

.findViewById(R.id.map_bubbleImage);

imageView.setOnClickListener(new View.OnClickListener() {

public void onClick(View v) {

mContext.popView.setVisibility(View.GONE);

}

});

return true;

}

@Override

public boolean onTap(GeoPoint arg0, MapView arg1) {

// TODO Auto-generated method stub

return super.onTap(arg0, arg1);

}

}

整个包在附件中,记得自己申请key,好像这个弹出框也可以在谷歌地图上用。

百度地图android弹出窗口,【代码】Android百度地图点击弹出信息框相关推荐

  1. 网页弹出窗口代码【来源于网络】

    网页弹出窗口代码 1.最基本的弹出窗口代码 其实代码非常简单: < SCRIPT LANGUAGE="java script"> < !-- window.ope ...

  2. 最基本的弹出窗口代码

    <SCRIPT LANGUAGE="javascript"> <!-- window.open ('page.html') --> </SCRIPT& ...

  3. Web最基本的弹出窗口代码(javascript)

    [1.最基本的弹出窗口代码] 其实代码非常简单: <SCRIPT LANGUAGE="javascript"> <!-- window.open ('page.h ...

  4. php 弹窗代码大全,PHP_asp.net弹出窗口代码大全,//关闭,父窗口弹出对话框,子窗 - phpStudy...

    asp.net弹出窗口代码大全 //关闭,父窗口弹出对话框,子窗口直接关闭 this.Response.Write(""); //关闭,父窗口和子窗口都不弹出对话框,直接关闭 th ...

  5. 基本弹出窗口代码大全

    [1.最基本的弹出窗口代码] 其实代码非常简单: <SCRIPT LANGUAGE="javascript"> <!-- window.open ("p ...

  6. javascript弹出窗口代码大全(转)

    转帖,用来学习的 javascript弹出窗口代码大全 如何利用网页弹出各种形式的窗口,我想大家大多都是知道些的,但那种多种多样的弹出式窗口是怎么搞出来的,我们今天就来学习一下: 1.弹启一个全屏窗口 ...

  7. 关闭弹窗代码java_弹出窗口代码

    [1.最基本的弹出窗口代码] 其实代码非常简单: 因为着是一段javascripts代码,所以它们应该放在之间.是对一些版本低的浏览器起作用,在这 些老浏览器中不会将标签中的代码作为文本显示出来.要养 ...

  8. html从右侧弹出面板,JavaScript实现网页右下角弹出窗口代码

    JavaScript实现网页右下角弹出窗口代码 - www.webdm.cn #winpop { width:200px; height:0px; position:absolute; right:0 ...

  9. jsp弹出新窗口代码

    各类网页弹窗代码编写 经常上网的朋友可能会到过这样一些网站,一进入首页立刻会弹出一个窗口,或者按一个连接或按钮弹出,通常在这个窗口里会显示一些注意事项.版权信息.警 告.欢迎光顾之类的话或者作者想要特 ...

  10. android 浮窗示例代码,Android 浮窗开发之窗口层级(示例代码)

    很多人都知道如何去实现一个简单的浮窗,但是却很少有人去深入的研究背后的流程机制,由于项目中浮窗交互比较复杂,遇到了些坑查看了很多资料,故总结浮窗涉及到的知识点: 窗口层级关系(浮窗是如何"浮 ...

最新文章

  1. 大四 PHP《上传文件》
  2. 【C语言】%[修饰符] 格式字符
  3. mysql int(3)与int(11)的区别详解
  4. [Python从零到壹] 三十七.图像处理基础篇之图像融合处理和ROI区域绘制
  5. linux下ls出现文件的后缀有@,* ,/之类的解释
  6. C++学习10 static静态成员变量和静态成员函数
  7. codeblocks下libcurl的配置
  8. ONNX系列一 --- 带有ONNX的便携式神经网络
  9. c#养老院老人信息管理系统源码 论文_我市“老年人关爱服务体系建设”专题研究论文荣获第五届青年学者老龄论坛特等奖_社会民生_新闻频道...
  10. n个人看了这个故事之后精神分裂了(ZT)
  11. No package ‘dconf‘ found
  12. 我的创作纪念日——文章汇总
  13. 二维向量的叉乘判断凹凸多边形
  14. Markdown:插入图片和图注
  15. Kaggle首战拿金牌总结!
  16. android 汉字拼音转换工具
  17. 商城项目 ------ 订单的生成功能(vue实现)
  18. 命令与征服4java攻略_《命令与征服4》全关卡任务流程攻略
  19. #CSDN精选博文##学习必备##IT技术学习#系统化学习的第一步:建构自己的知识体系
  20. 一个屌丝程序猿的人生(六十九)

热门文章

  1. 固定资产管理现状分析
  2. 数码相框_电子书之代码阅读及编写(7)
  3. 从Select出发认识SQL语句
  4. EEROR:Windows named pipe error: The system cannot find the file specified. (code:2)
  5. SpringMVC的学习(三)——Controller传递数据
  6. 人脸识别方框闪烁原因
  7. omc服务器操作维护与日志管理,中兴通讯WCDMA网管综合解决方案-通信/网络-与非网...
  8. 与 hao123 垃圾战斗
  9. 使用浏览器开发工具测试网站可访问性的七种方法
  10. CentOS8 DHCP服务器配置