Android DEV : Show a window on Baidu Map

 

    周末同学说想弄个基于Baidu地图的应用来, 于是就开始研究这个SDK来. 其中应用有个需求, 需要点击地图上的标记时, 显示一组按钮. 于是按照常规的作法失业了InfoWindow, 如下.

    //panel is a view, some buttons in it.
    final InfoWindow iw = new InfoWindow(panel, marker.getPosition(), null);
    //getMap() return BaiduMap
    activity.getMap().showInfoWindow(iw);

 

    倒是不难, 但处理点击事件时发现有问题了. 根据文档, 此时显示出来的InfoWindow实际是View的Bitmap图片, 也就意味着根本没法区分View上的Buttons了, 更别说能处理Button的点击事件了. 怪不得, 文档中对于整个InfoWindow只有一个ClickListener, 还不含有View信息.

    这样只能"曲线救国"了, InfoWindow不能用, 那就直接在MapView中弹出个PopupWindow吧. (顺手敲打测试代码, 就记录用)

 

    final View panel = UserPanel.make(activity);
    Point p = activity.getMap().getProjection().toScreenLocation(marker.getPosition());

    final PopupWindow pw = new PopupWindow(panel);
    pw.setWidth(ViewGroup.LayoutParams.WRAP_CONTENT);
    pw.setHeight(ViewGroup.LayoutParams.WRAP_CONTENT);
    pw.setFocusable(true);
    pw.setOutsideTouchable(true);
    //getMapView() return MapView, not BaiduMap any more
    pw.showAtLocation(activity.getMapView(), Gravity.LEFT | Gravity.BOTTOM,p.x, p.y );

    final Button btn = (Button) panel.findViewById(R.id.button2);
    btn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            pw.dismiss();
        }
    });

 

    搞定,人长个脑袋总是有用的...

 

    测试中发现个问题, 如果地图发生放缩, Window弹出的位置会不准确, 很是奇怪, 按理MapView发生变化时, 其Projection应该能够实时跟随变化的, 这个问题回头需要再看看.

Android DEV : Show a window on Baidu Map

时间: 2024-12-29 07:07:27

Android DEV : Show a window on Baidu Map的相关文章

Android 百度地图开发之一(Hello BaiDu Map)

之前也接触过百度地图的开发,但那是在网上找的案例或代码,而且是比较老的版本.打算重新学习一下百度地图的开发. 本次使用的百度地图的版本是 Android SDK v3.0.0 本篇文章主要讲述百度地图开发的准备和地图的成功显示即可. 首先建议大家先申请注册一个百度账号. 申请密钥(要想实现百度地图的相关服务必须申请密钥),网址:http://lbsyun.baidu.com/apiconsole/key 需要注意的是:应用名称不要重复或无效,安全码的输入详情请查看:http://develope

如何下载Android源码(window和Linux)

文章参照来源:http://source.android.com/source/downloading.html 一.window平台 关于在window平台下载Android源码,网上一般使用的是直接用git来下载. 比如: http://wenku.baidu.com/view/a4f5f922482fb4daa58d4bb5.html http://hendyyou.iteye.com/blog/1147738 这种方式最严重的问题是,对源码只能分块(git块)进行下载,而且块数很多.关键

提高Baidu Map聚合的效率

百度的MAP的例子里提供了一个聚合效果,地址是http://developer.baidu.com/map/jsdemo.htm#c1_4 ,效果图如下图: 这个效果很赞,但效率很低,当数据量达到5000的时候就难以忍受了,加载和地图缩放都很卡,用户体验很差劲.官方提供的MarkerClusterer.js 文件是这样的: /** * @fileoverview MarkerClusterer标记聚合器用来解决加载大量点要素到地图上产生覆盖现象的问题,并提高性能. * 主入口类是<a href=

[BaiDu Map]使用小计

最近从谷歌地图转移到百度地图,关于其中操作代码备记下,其中包括关于MarkerManager使用,代码基于API 2.0: var allMarkers = []; var map = null; var mgr = null; var infoWindow; /* baidumap初始化 *xlat,ylng 经纬度 *zoom 缩放级别 *gdiv 承载div */ function setupMap(xlat, ylng, zoom, gdiv) { map = new BMap.Map(

[Baidu Map]添加全景地图

关键代码: /* 为地图添加全景 @map BMap.Map @divid 全景地图承载div @ylng,xlat 全景地图初始化经纬度 eg:panorama = addPanorama(map, 'panorama', ylng, xlat); */ function addPanorama(map, divid, ylng, xlat) { var panorama = new BMap.Panorama(divid); //全景图展示 panorama.setPosition(new

baidu map develop

百度地图 前端时间,因项目需要加入了谷歌地图,但是由于谷歌换了接口,对谷歌地图市区耐心了,还是使用国产的百度吧,先走起来. 如果你有百度账号,那就可以搜索百度地图开发者中心,去申请密钥(ak),然后就可以使用了,先来个hello world吧. <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8&

Android DEV : Android Studio Build Error

    有段时间没打开Android Studio, 今天尝试编译个App却出现如下错误. Error:The SDK Build Tools revision (19.0.3) is too low for project ':app'. Minimum required is 19.1.0     折腾了一下, 发现原来是app的buildToolsVersion没有跟上Android SDK Build-Tools版本变化, 更新下app目录下的build .gradle中下面相应的值就好

Android排错:has leaked window com.android.internal.policy.impl.PhoneWindow$ that was originally added here

原文地址: http://www.cnblogs.com/royenhome/archive/2011/05/20/2051879.html 异常场景: 经常在应用中需要处理一些耗时的工作,诸如读取大文件.访问网络资源等.为了避免因程序假死而带来的糟糕用户体验,通常我们可以通过线程+Handler或者Android提供的AsyncTask来解决该问题,并一般以ProgressDialog等提示性控件来告知用户当前的程序进度.而标题中描述的异常则会常常出现在这样的场景中,并且往往掩盖了导致异常的真

Android failed creating starting window

/***************************************************************************** * Android failed creating starting window * 声明: * 最近正在整的一个App在logcat中总是报这种异常,貌似也不影响程序的运行,但 * 每次都看到这种异常实在是难受,于是还是查点资料解决了去吧. * * 2016-5-5 深圳 南山平山村 曾剑锋 **********************