Bridegroom777
Bridegroom777
  • 发布:2018-05-10 12:00
  • 更新:2018-05-10 17:27
  • 阅读:968

使用new plus.nativeObj.View创建的地图,关闭视图后,tag一直不消失

分类:HTML5+

2018-05-10 12:00 负责人:无 分享
已邀请:
DCloud_heavensoft

DCloud_heavensoft

只有subnview才是跟着webview一起消失的。单独创建的nview,需要单独写js去close

Bridegroom777

Bridegroom777 (作者) - emmm

<!DOCTYPE HTML>  
<html>  

    <head>  
        <meta charset="utf-8" />  
        <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />  

        <link href="css/mui.min.css" rel="stylesheet" />  
        <link rel="stylesheet" type="text/css" href="css/common.css" />  
        <link rel="stylesheet" href="css/SakuraLegend.css" />  
        <link rel="stylesheet" href="css/mui.picker.min.css" />  
        <link rel="stylesheet" href="css/mui.poppicker.css" />  

        <title>Hello H5+</title>  

        <style type="text/css">  
            #map {  
                width: 100%;  
                position: fixed;  
                top:90px;  
                bottom: 0px;  
                line-height: 200px;  
                text-align: center;  
                background: #FFFFFF;  
            }  

            .ipos {  
                background: no-repeat center center url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAsCAYAAAAn4+taAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAABZ0RVh0Q3JlYXRpb24gVGltZQAwNC8wMS8xNExYUU4AAAAcdEVYdFNvZnR3YXJlAEFkb2JlIEZpcmV3b3JrcyBDUzbovLKMAAACTklEQVRoge2YO2gUURSGv7PjEkULO4UoFooIFgtzprAPWMiWKewSTadgYWEhBjHCloGUQtYHaGEjGAQtUmgnZO9YpsqC2NgYIwjRInMscoPrYkzhGTIs8zdnzoP578ewM/eumBmjoMZ+L8BLNUjVVINUTTVI1VSDVE0jA3KgjJuGEE6LyI2iKC6JyBkzWxORF8ADVV0rw1O891ohhCngPnDyL+1PZjabZdkTV1OcQUIIV4CHMf0JvAK+A0eANjAWe1dV9ZGbMY6/kTzPzwHzMV0VkZaqTgLTqjopIi1gNfbnQwhnvbzBEcTMbgFHgXURaRdFsRFCWAa+hhCWi6LYEJE2sB7nbnp5g+9b62KMIU3Tvoh0gQm2Fz0hIt00TftAADCztqO3K8h4jJsAZnZ+sDmQ/wAQkXEc5QnyJcZjACLybLApIk/j5YmheRd5gryLMev1elOqesfMrpvZczO7pqqzvV5vGmgNzbvIDUREXsbLRES6IYTbzWZzMcuyy0mSPA4h3BWRxR3PgXkff6/vSJ7nx83sPXBqoLwJFEACHByofxSRC2mafnYxx/GJxEW9GSofAg7zJwTAa08I8N80doG9HrHx++vvJlcQVV0xs6V/zZjZkqquePpCOdv4OWBrl96WiNwrwdMfJMuyHFjYpb2gqh+8PaG8g9Uc0B+q9WO9FJUCoqrfgBm2X73EOBPrpai0o66qvgU6Me3EvDSVctTdUZIknaIoxhqNRmfv6f+T+1F3vzQy/6LUIFVTDVI11SBVUw1SNdUgVdPIgPwCtt+2JPQRVicAAAAASUVORK5CYII=);  
                background-size: 50px 44px;  
            }  

            .map_footerdiv {  
                display: block;  
                position: fixed;  
                top: 44px;  
                left: 0;  
                width: 100%;  
                padding: 2.5vw;  
                background-color: #fff;  
                z-index: 8888;  
                padding-bottom: 0;  
                padding-top: 3vw;  
            }  
            .map_footerdiv input{  
                margin: 0;  
            }  

            .map_footerdiv ul {  
                display: -webkit-box;  
                position: relative;  
            }  

            .map_footerdiv ul li {  
                -webkit-box-flex: 1;  
                text-align: center;  
                padding: 2.5vw 0;  
            }  

            .li_mapbottomi {  
                display: inline-block;  
                position: relative;  
                width: 1.4em;  
                height: 1.4em;  
            }  

            .hg_input {  
                color: #2a2a2a;  
                width: 100% !important;  
                display: block;  
                /* margin-bottom: 0 !important; */  
                padding: 0 !important;  
                /* border: none !important; */  
                font-size: .24rem;  
                height: .6rem !important;  
            }  
        </style>  
    </head>  

    <body>  
        <div class="sl_commonheader">  
            <div class="sl_commonheader_in">  
                <a class=" fl  " id="back" style="width:1rem;text-align:left;position: absolute;left: 0;top: 0;"><i class="sl_commonleft"></i></a>  
                <div class="sl_commonheader_middle">  
                    <div class="sl_common_middlediv">  
                        <span class="sl_common_middlespan c_ba f18" style="margin-top: 0;">地图选址</span>  
                    </div>  
                </div>  
                <div class="sl_com_localred fr c_re f16 " id='saveAddress'>  
                    确定  
                </div>  
            </div>  
        </div>  
        <div style="height:4em"></div>  
        <div id="map">地图加载中...</div>  
        <div class="map_footerdiv">  
            <input type="text" name="" id="detail_address" class="hg_input" placeholder="请输入详细地址" />  
        </div>  

    </body>  
    <!--<script type="text/javascript" src="../js/immersed.js" ></script>-->  
    <script src="js/mui.min.js"></script>  
    <script src="js/rem.js"></script>  
    <script src="js/app.js"></script>  
    <script src="js/myPlus.js"></script>  
    <script src="js/md5.js"></script>  
    <script src="js/function.js"></script>  
    <script src="js/jquery-2.1.0.js"></script>  
    <script type="text/javascript">  
        (function($$, doc) {  
            var myPlus = Object.create(MyPlus);  
            var address = '';  
            var lon = '';  
            var lat = '';  
            var currentLon = '';  
            var currentLat = ''  
            var old_back;  
            var view  
            var map  
            var return_back;  
            document.getElementById("back").addEventListener('tap', function() {  
                mui.back()  
            })  
            /*通过用户输入详细地址进行搜索*/  
            $('.map_footerdiv').on('blur','#detail_address',function(){  
                /*获取用户输入的详细地址*/  
                var address=$('#detail_address').val()  
                /*用户输入地址为空时返回*/  
                if(address == ''){  
                    return  
                }  
                /*通过翻译接口将地址翻译成日文*/  
                myPlus.ajax('/api/v1/trans', {  
                        data: {  
                            q: address,  
                            to: 'jp',  
                            from:'zh'  
                        },  
                        success: function(resp) {  
                            address=resp[0].dst  
                        },  
                        fail: function(info) {  
                            $.toast(info);  
                        }  
                    })  
                /*截取6个字进行检索*/  
                var search_address=address.substring(0,6)  
                mui.ajax('http://nominatim.openstreetmap.org/search', {  
                            data: {  
                                q:search_address,  
                                format:'json'   
                            },  
                            type: 'get',  
                            dataType: 'json',  
                            success:function(data){  
                                //服务器返回响应,根据响应结果,分析是否登录成功;  
                                var once = data[0];  
                                if(once == ' '|| once == undefined || once.lon == undefined){  
                                    mui.toast('暂时没搜索到您输入的地址,请核对后再搜索哦!')  
                                    mui.back = function() {  
                                        old_back();  
                                    }  
                                    return false;  
                                }  
                                currentLon = once.lon   
                                currentLat = once.lat  
                                lat=currentLat  
                                lon=currentLon  
                                address=once.display_name  
                                //$('#detail_address').val(address)  
                                view.close()  
                                /*调用地图方法对地图重新构建*/  
                                location()  
                            },  
                            error:function(xhr,type,errorThrown){  
                                //异常处理;  
                                console.log(type);  
                            }  
                        });  
            })  
            /*构建地图方法*/  
            function location() {  
                view = new plus.nativeObj.View('marker', {  
                    top: '46%',  
                    left: '45%',  
                    height: '5%',  
                    width: '10%'  
                }, [{  
                    tag: 'img',  
                    id: 'img',  
                    src: 'http://yinghua.buy23.cn/map.png',  
                    position: {  
                        top: '0',  
                        left: '0',  
                        width: '100%',  
                        height: '100%'  
                    }  
                }]);  
                view.show();  

                map = new plus.maps.Map("map", {  
                    zoomControls: true, // 缩放  
                    position: 'absolute', // 地图固定  
                    traffic: true  
                });  
                map.setMapType( plus.maps.MapType.MAPTYPE_NORMAL );  
                /*设置中心点*/  
                var center = new plus.maps.Point(currentLon, currentLat);  

                map.setCenter(center)  
                /*监听地图拖动事件*/  
                map.onstatuschanged = function(event) {  
                    console.log(JSON.stringify(event));  
                    var center = event.center;  

                    var centerPoint = new plus.maps.Point(center.longitude, center.latitude);  
                    plus.maps.Map.reverseGeocode(centerPoint, {},  
                        function(event) {  
                            console.log(JSON.stringify(event));  

                            address = event.address;  
                            lat = event.coord.latitude;  
                            lon = event.coord.longitude;  
                            $('#detail_address').val(address)  
                        },  
                        function(event) {  
                            console.log(JSON.stringify(event))  
                        })  
                }  
            }  
            /*保存地址返回上一级页面*/  
            document.getElementById('saveAddress').addEventListener('tap', function() {  
                console.log(lat, lon, address)  
                address=$('#detail_address').val()  
                if(lat == 0 || lon == 0) {  
                    $$.toast('请拖动地图选址!');  
                    return false;  
                };  
                if(address == '') {  
                    $$.toast('地址不存在,请重新拖动地图!');  
                    return false;  
                }  
                view.hide();  
                view.close()  

                var wvList = plus.webview.all();  
                $$.fire(wvList[wvList.length - 2], 'location', {  
                    'lon': lon,  
                    'lat': lat,  
                    'address': address,  
                });  

                mui.back();  
                plus.webview.currentWebview().close()  
            })  

            var app = Application.createNew($$, {  
                init: function() {  
                    myPlus.initPage(function(self) {  

                        $$.init({  
                            swipeBack: false  
                        })  
                         old_back = mui.back;  
                        return_back = mui.back;  
                        mui.back = function() {  
                            console.log(666)  
                            view.hide()  
                            view.close();  
                            old_back();  
                        }  
                        var wv = plus.webview.currentWebview();  
                        // 关闭侧滑返回功能  
                        wv.setStyle({  
                            'popGesture': 'none'  
                        });  
                        if(self.address != '' && self.address != undefined){  
                            var one=self.address.split(',')  
                            var search_address=one[0]  
                            $('#detail_address').val(self.address)  
                            mui.ajax('http://nominatim.openstreetmap.org/search', {  
                            data: {  
                                q:search_address,  
                                format:'json'   
                            },  
                            type: 'get',  
                            dataType: 'json',  
                            success:function(data){  
                                //服务器返回响应,根据响应结果,分析是否登录成功;  
                                var once = data[0];  
                                console.log('地址:'+JSON.stringify(data))  
                                if(once == ' '|| once == undefined || once.lon == undefined){  
                                    mui.toast('暂时没搜索到您输入的地址,请核对后再搜索哦!')  
                                    mui.back = function() {  
                                        old_back();  
                                    }  
                                    return false;  
                                }  
                                currentLon = once.lon   
                                currentLat = once.lat  
                                lat=currentLat  
                                lon=currentLon  
                                address=once.display_name  
                                location()  
                            },  
                            error:function(xhr,type,errorThrown){  
                                //异常处理;  
                                console.log(type);  
                            }  
                        });  
                        }else{  
                            plus.geolocation.getCurrentPosition(function(position){  
                            currentLon=position.coords.longitude  
                            currentLat=position.coords.latitude  
                            location()  
                        },function(e){  
                            console.log(JSON.stringify(e))  
                             currentLon=139.767701  
                            currentLat=35.667505     
                            location()  
                        });  
                        }  

                        //                      var point = new plus.maps.Point(138.793868,36.848619);  
                        //                      plus.maps.Map.reverseGeocode(point,{coordType: 'bd09ll'},function(event){  
                        //                          var address = event.address;  // 转换后的地理位置  
                        //                          var point = event.coord;  // 转换后的坐标信息  
                        //                          var coordType = event.coordType;    // 转换后的坐标系类型  
                        //                          console.log(point.longitude, point.latitude)  
                        //                          currentLon = point.longitude  
                        //                          currentLat = point.latitude  
                        //                          console.log(JSON.stringify(event))   
                        ////                            alert("Address:"+address);  
                        //                      },function(e){  
                        //                          alert("Failed:"+JSON.stringify(e));  
                        //                      });  
                        //                      plus.maps.Map.geocode("名古屋", {city: '日本'},function(event){  
                        //                          console.log(JSON.stringify(event))  
                        //                          var address = event.address;  // 转换后的地理位置  
                        //                          var point = event.coord;  // 转换后的坐标信息  
                        //                          var coordType = event.coordType;    // 转换后的坐标系类型  
                        //                          console.log(JSON.stringify(point))  
                        //                          currentLon=point.longitude;  
                        //                          currentLat=point.latitude;  
                        //                          location()  
                        ////                            alert("Coord:"+JSON.stringify(point));  
                        //                      },function(e){  
                        //                          alert("Failed:"+JSON.stringify(e));  
                        //                      });  

                    })  
                }  
            });  
            doc.addEventListener('plusready', function() {  

                app.init();  
            })  

        })(mui, document)  
    </script>  

</html>
Trust

Trust - 少说废话

在 Android 上单独测试 nativeView 的创建、显示以及销毁都没有问题。

请参考下文中的说明,补全必要的信息。同时上传一个可以重现问题的 demo,以便调试确认问题,感谢配合。
http://ask.dcloud.net.cn/article/13255

该问题目前已经被锁定, 无法添加新回复