• 百度地图信息提示框的修改 转


    http://blog.csdn.net/jankercsdn/article/details/45392635

     

    一个小项目,百度地图的定制,电脑用的是触摸屏,支持手写输入,中文输入直接调用系统的虚拟键盘,手写输入是参考网上高手写的一个控件。

    百度的信息提示框里的搜索框里要输入查询地址,就是去哪里,到哪里那个地址输入框,要解决的问题是怎么把虚拟输入键盘的内容赋值到这个地址输入框,并要判断当前是哪个输入框。

    一般运用信息提示框是调用这个库“http://api.map.baidu.com/library/SearchInfoWindow/1.5/src/SearchInfoWindow_min.js”

    下载这个库,并对其改造

    增加属性和方法

        SearchInfoWindow.prototype.getOffset = function(){
            return this._opts.offset;
        }

    //这里增加:

    //当前的地址类型
        SearchInfoWindow.prototype.getCurrSelAddr = function(){
            return this._currSelAddr;
        }

    //设置地址内容
        SearchInfoWindow.prototype.setSearchAddr = function(addr){
            this._setSearchAddr(addr);

        },


        baidu.object.extend(SearchInfoWindow.prototype,{

    .........................

    //

            /**
             * 得到searchInfoWindow的高度跟宽度
             * @return none
             */
            _getSearchInfoWindowSize: function(){
              this._boxWidth = parseInt(this.Container.offsetWidth,10);
              this._boxHeight = parseInt(this.container.offsetHeight,10);
            },

             //根据地址选择设置,这里要注意,只能用Value属性,不能用innerHTML和innerText(由于不熟悉html和js,这里卡了,不用Value怎么也输入不了文本)
            _setSearchAddr: function (addr) {
                switch (this._currSelAddr) {
                    case BMAPLIB_TAB_SEARCH:
                        this.dom.searchText.value = addr;
                        break;
                    case BMAPLIB_TAB_TO_HERE:
                        this.dom.transText.value = addr;
                        break;
                    case BMAPLIB_TAB_FROM_HERE:
                        this.dom.transText.value = addr;
                        break;
                }


            },

            /**
             * 阻止事件冒泡
             * @return none
             */

    ...........................

    //记录选择的地址类型

                //显示当前tab content并高亮tab
                switch (type) {
                    case BMAPLIB_TAB_SEARCH:
                        this.dom.seartTab.className      = "BMapLib_current";
                        this.dom.searchBox.style.display = "block";
                        this.dom.transBox.style.display  = "none";
                        this._currSelAddr = BMAPLIB_TAB_SEARCH;  //地址类型
                        break;
                    case BMAPLIB_TAB_TO_HERE:
                        this.dom.tohereTab.className     = "BMapLib_current";
                        this.dom.searchBox.style.display = "none";
                        this.dom.transBox.style.display  = "block";
                        this.dom.stationText.innerHTML   = "起点";
                        this._pointType = "endPoint";
                        this._currSelAddr = BMAPLIB_TAB_TO_HERE;  //地址类型
                        break;
                    case BMAPLIB_TAB_FROM_HERE:
                        this.dom.fromhereTab.className   = "BMapLib_current";
                        this.dom.searchBox.style.display = "none";
                        this.dom.transBox.style.display  = "block";
                        this.dom.stationText.innerHTML   = "终点";
                        this._pointType = "startPoint";
                        this._currSelAddr = BMAPLIB_TAB_FROM_HERE;  //地址类型
                        break;
                }


                this._firstTab.className += " BMapLib_first";
            },


            /**
             * 绑定自动完成事件
             */

    DELPHI调用的网页文档

    //添加标记和信息窗口
    function createMarkerAndInfo(mid, lng, lat, tel, addr, mIcon, iImg){
            var point = new BMap.Point(lng,lat);
            var markerIconf = new BMap.Icon(mIcon,new BMap.Size(20,32));
            var marker = new BMap.Marker(point,{icon:markerIconf});
            marker.mid = mid;
            map.addOverlay(marker);
            //var label = new BMap.Label(mid,{offset:new BMap.Size(20,-10)});
            //marker.setLabel(label);


            var infoImgf = '';
            if(iImg != ''){
                    infoImgf = ' <img src="'+iImg+'" '+
                               ' alt="" style="float:right;zoom:1;overflow:hidden;100px;height:100px;margin-left:3px;"/>';
            }


            var sContent =  '<div style="margin:0;line-height:20px;padding:2px;" >'+ infoImgf+
                            // ' <img src="'+iImg+'" '+
                            // ' alt="" style="float:right;zoom:1;overflow:hidden;100px;height:100px;margin-left:3px;"/>' +
                            ' 地址: '+addr+' <br/>'+
                            ' 电话: '+tel+' <br/>' +
                            '</div>';


            var opts = {
                    title : mid,                    //标题
                    width : 280,                    //宽度
                    height: 120,                    //高度
                    panel  : "panel",               //检索结果面板
                    enableAutoPan : true,           //自动平移
                    enableSendToPhone : false,      //禁止发信息
                    searchTypes   :[
                            BMAPLIB_TAB_SEARCH,     //周边检索
                            BMAPLIB_TAB_TO_HERE,    //到这里去
                            BMAPLIB_TAB_FROM_HERE   //从这里出发
                    ]
            };


            var searchInfoWindow = new BMapLib.SearchInfoWindow(map,sContent,opts);


            marker.siw = searchInfoWindow;


            arrMarkers.push(marker);


            marker.addEventListener("click", function(){
                    searchInfoWindow.open(marker);
                    document.getElementById("MarkerID").innerHTML = marker.mid;
            });

    //监听信息窗口的打开和关闭,打开时,显示手写输入按钮,关闭时隐藏手写输入按钮
            searchInfoWindow.addEventListener("open",function(){
                    document.getElementById("isOpenInfo").innerHTML = 1;
            });
            searchInfoWindow.addEventListener("close",function(){
                    document.getElementById("isOpenInfo").innerHTML = 0;
            });
    }

  • 相关阅读:
    CodeSmith的OracleProviders
    使用 Web Services Enhancements 2.0 的基于角色的安全性
    用WSE在Web服务中验证用户身份(3)
    使用 Web Services Enhancements 2.0 进行编程
    使用 Web Services Enhancements 发送带有附件的 SOAP 消息
    用WSE在Web服务中验证用户身份(1)
    Web Services Enhancements 管道技术内幕
    确保应用程序服务器的安全
    基于图象光照问题提出(看文章的记录一)
    用WSE在Web服务中验证用户身份(2)
  • 原文地址:https://www.cnblogs.com/zhangzhifeng/p/6134691.html
Copyright © 2020-2023  润新知