dreamzoom
dreamzoom
  • 发布:2015-07-17 11:14
  • 更新:2016-05-05 21:49
  • 阅读:2875

plus.maps 得百度地图插件 是怎么创建 view并 加入页面的 ?

分类:5+ SDK

github上的源码里没看到有将view添加到activity的操作呢,而且demo里插件没有对应的js声明调用原生的代码,请问是如何调用的呢?

<!DOCTYPE HTML>
<html>

<head>  
    <meta charset="utf-8" />  
    <meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />  
    <meta name="HandheldFriendly" content="true" />  
    <meta name="MobileOptimized" content="320" />  
    <title>Hello H5+</title>  
    <script type="text/javascript" src="../js/common.js"></script>  
    <script type="text/javascript">  
        var ws=null;  
        var em=null,map=null;  

        // H5 plus事件处理  
        function plusReady(){  

            if(!em||ws){return};  
            // 获取窗口对象  
            ws=plus.webview.currentWebview();  
            setTimeout(function(){  
                map=new plus.maps.Map("map");  
                map.centerAndZoom(new plus.maps.Point(116.3977,39.906016),12);  
                createMarker();  
                // 创建子窗口  
                createSubview();  
            },300);  
        }  
        if(window.plus){  
            plusReady();  
        }else{  
            document.addEventListener("plusready",plusReady,false);  
        }  
        // DOMContentloaded事件处理  
        document.addEventListener("DOMContentLoaded",function(){  
            em=document.getElementById("map");  
            window.plus&&plusReady();  
        },false);  
        function userLocation(){  
            map.showUserLocation( true );  
            map.getUserLocation(function(state,pos){  
                if(0==state){  
                    map.setCenter(pos);  
                }  
            });  
        }  
        function createMarker(){  
            var marker=new plus.maps.Marker(new plus.maps.Point(116.347496,39.970191));  
            marker.setIcon("/logo.png");  
            marker.setLabel("HBuilder");  
            var bubble = new plus.maps.Bubble("打造最好的HTML5移动开发工具");  
            marker.setBubble(bubble);  
            map.addOverlay(marker);  
        }  
        function createSubview(){  
            if('Android'!=plus.os.name){  
                return;  
            }  
            var wsub=plus.webview.create('maps_map_sub.html','sub',{top:'44px',height:'60px',position:'absolute',scrollIndicator:'none',background:'transparent'});  
            ws.append(wsub);  
        }  
        function resetMap(){  
            map.centerAndZoom(new plus.maps.Point(116.3977,39.906016),12);  
        }  
    </script>  
    <link rel="stylesheet" href="../css/common.css" type="text/css" charset="utf-8" />  
    <style type="text/css">  
        #map {  
            width: 100%;  
            position: fixed;  
            top: 44px;  
            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;  
        }  
    </style>  
</head>  

<body>  
    <header>  
        <div class="nvbt iback" onclick="back();"></div>  
        <div class="nvtt">应用内置地图</div>  
        <div class="nvbt ipos" onclick="userLocation();"></div>  
    </header>  
    <div id="map">地图加载中...</div>  
</body>  

</html>

在这个页面里没有类似以下代码对原生插件的声明

document.addEventListener( "plusready", function()
{
// 声明的JS“扩展插件别名”
var _BARCODE = 'plugintest',
B = window.plus.bridge;
var plugintest =
{
// 声明异步返回方法
PluginTestFunction : function (Argus1, Argus2, Argus3, Argus4, successCallback, errorCallback )
{
var success = typeof successCallback !== 'function' ? null : function(args)
{
successCallback(args);
},
fail = typeof errorCallback !== 'function' ? null : function(code)
{
errorCallback(code);
};
callbackID = B.callbackId(success, fail);
// 通知Native层plugintest扩展插件运行”PluginTestFunction”方法
return B.exec(_BARCODE, "PluginTestFunction", [callbackID, Argus1, Argus2, Argus3, Argus4]);
},
PluginTestFunctionArrayArgu : function (Argus, successCallback, errorCallback )
{
var success = typeof successCallback !== 'function' ? null : function(args)
{
successCallback(args);
},
fail = typeof errorCallback !== 'function' ? null : function(code)
{
errorCallback(code);
};
callbackID = B.callbackId(success, fail);
return B.exec(_BARCODE, "PluginTestFunctionArrayArgu", [callbackID, Argus]);
},
// 声明同步返回方法
PluginTestFunctionSync : function (Argus1, Argus2, Argus3, Argus4)
{
// 通知Native层plugintest扩展插件运行“PluginTestFunctionSync”方法并同步返回结果
return B.execSync(_BARCODE, "PluginTestFunctionSync", [Argus1, Argus2, Argus3, Argus4]);
},
PluginTestFunctionSyncArrayArgu : function (Argus)
{
return B.execSync(_BARCODE, "PluginTestFunctionSyncArrayArgu", [Argus]);
}
};
window.plus.plugintest = plugintest;
}, true );

请问代码是如何调用的呢?

2015-07-17 11:14 负责人:无 分享
已邀请:
云钦

云钦 - 学习中

代码可读性太差

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