android加载高德地图请求服务器添加经纬度marker标记(调用h5加载)

前言:(原创文章,转载请注明出处)

老板突发奇想要让用android加载h5做地图,还有根据请求的不同经纬度在地图上显示出不同的marker标记(。。。。这个破需求感觉没啥大用处,可能也就不懂软件的人看着高大上吧)本人小白,不会h5,也不会js。根据自己写过的webview的demo加上后台(比我js懂得多)的帮助,终于攻克了这个小难题,下面给大家一个小教程,以免走弯路。

一:webview设置

webView.getSettings().setAppCacheEnabled(true);//是否使用缓存api集

webView.getSettings().setJavaScriptEnabled(true);//js交互

webView.getSettings().setDomStorageEnabled(true);//与地图交互

webView.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);//设置js可弹窗

webView.setWebChromeClient(new WebChromeClient(){}//处理解析,渲染网页

webView.setWebViewClient(new WebViewClient(){}//打开网页时不调用系统浏览器,而是在本地的webview显示

二:js地图加载显示

<script src="http://code.jquery.com/jquery-1.4.1.min.js"></script>
<script type="text/javascript"
    src="https://webapi.amap.com/maps?v=1.4.10&key=“你自己申请的key"></script>
<script type="text/javascript">

设置地图的中心点及缩放级别

var map = new AMap.Map('container', {
    resizeEnable: true,
    center: [116.39, 39.9],
    zoom: 5
});

添加marker标记(marker是后台传过来的坐标数据)

function didi(l,s){
    var marker = new AMap.Marker({
        position: new AMap.LngLat(114.38, 38.9),   // 经纬度对象,也可以是经纬度构成的一维数组[114.38, 38.9]
        title: ''
    });

    map.add(marker);

}

 

三:webview与js交互传值

加载本地html(“路径固定这样写,html文件名带后缀引用时就加上后缀,不带后缀引用时就不要加后缀名”)

webView.loadUrl("file:///android_asset/xinwenben.html");

根据进度条显示地图加载情况

@Override
                public void onProgressChanged(WebView view, int newProgress) {
                    if(newProgress==100){
                        Toast.makeText(MapActivity.this, "地图加载完毕", Toast.LENGTH_SHORT).show();
                    }else{
                        Toast.makeText(MapActivity.this, "地图正在加载中", Toast.LENGTH_SHORT).show();
                    }

                }

单个传值:

webView.loadUrl("javascript:didi(" + strLong + "," + strLat +")");//传参(经纬度)

集合传值:

/**
             * 打开网页时不调用系统浏览器,而是在本地webview显示
             */
             
            webView.setWebViewClient(new WebViewClient(){
                @Override
                public void onPageFinished(WebView view, String url) {

                    Log.d("fan","这次地图加载完成了");
                    String[] strings=new String[10];
                    for (int i=0;i<list.size();i++){
                        //集合传参
                        webView.loadUrl("javascript:didi(要传的集合);
                    }

                     //   Log.d("fan","..."+strLong+"..."+strLat);
                }
            });

返回键点击事件

/**
 * 重写返回键点击事件
 * @param keyCode
 * @param event
 * @return
 */
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if(webView.canGoBack() && keyCode==KeyEvent.KEYCODE_BACK){
        webView.goBack();//返回上一层页面
    }
    return true;
}

转载自:https://blog.csdn.net/u011208447/article/details/84190963

You may also like...