1. 程式人生 > >webView中匯入百度地圖和設定樣式

webView中匯入百度地圖和設定樣式

首先看效果圖:
這裡寫圖片描述

怎樣獲取百度地圖api

第一種方式:找到“百度地圖api”
這裡寫圖片描述

這裡寫圖片描述

這裡寫圖片描述

第二種方式:”百度地圖生成器“
注意此方式生成的地圖使用的是百度地圖api1.1
這裡寫圖片描述

設定地圖樣式

博主使用的是用百度地圖生成器生成的地圖,可以先儲存成html格式,檢視地圖是否需要改進

這裡寫圖片描述
方法:使用Google瀏覽器開啟剛剛儲存的HTML,開啟開發者模式(或者按F12)
這裡寫圖片描述

新增樣式消除logo

.BMap_cpyCtrl {
    display: none;
}

.anchorBL {
    display: none
; }
設定背景色

這裡寫圖片描述
因為這個樣式在百度地圖api1.0中不起效,所以我把JavaScript換成了3.0

原js:
<script type="text/javascript" src="http://api.map.baidu.com/api?key=&v=1.1&services=true"></script>
換成api3.0
 <script type="text/javascript"src="http://api.map.baidu.com/api?v=3.0&ak=SWxEiZYKTcujcC6rTY5MvBsWHETIlT97">
</script>
設定地圖的大小

這裡設定充滿螢幕,需要改動三個地方,是否還有其他方法不太清楚,但是博主是這樣做的(可能我太菜了)
這裡寫圖片描述
這裡寫圖片描述
這裡寫圖片描述

暫時博主就只設置這幾個樣式,最終效果圖如下:
這裡寫圖片描述

使用webView載入百度地圖

這裡我使用Javafx中的webView元件,詳情可見:WebView元件概覽

目錄結構:
這裡寫圖片描述

package work.javaee.maptest;

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.BorderPane;
import
javafx.scene.web.WebEngine; import javafx.scene.web.WebView; import javafx.stage.Stage; public class Main extends Application{ @Override public void start(Stage primaryStage) throws Exception { //設定窗體佈局 BorderPane borderPane = new BorderPane(); //建立scene Scene scene = new Scene(borderPane); //建立WebView和WebEngine物件 WebView webView = new WebView(); WebEngine webEngine = webView.getEngine(); //使用類載入器載入本地HTML程式碼 webEngine.load(ClassLoader.getSystemClassLoader().getResource("html/map.html").toExternalForm()); borderPane.setCenter(webView); primaryStage.setScene(scene); primaryStage.show(); } public static void main(String[] args) { launch(args); } }
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
    <title>百度地圖API自定義地圖</title>
    <!--引用百度地圖API-->
    <style type="text/css">
        html, body {
            margin: 0;
            padding: 0;
            width: 100%;
            height: 100%;
        }

        .iw_poi_title {
            color: #CC5522;
            font-size: 14px;
            font-weight: bold;
            overflow: hidden;
            padding-right: 13px;
            white-space: nowrap
        }

        .iw_poi_content {
            font: 12px arial, sans-serif;
            overflow: visible;
            padding-top: 4px;
            white-space: -moz-pre-wrap;
            word-wrap: break-word
        }

        .BMap_cpyCtrl {
            display: none;
        }

        .anchorBL {
            display: none;
        }

        body {
            width: 100%;
            height: 100%;
        }
    </style>
    <script type="text/javascript"
            src="http://api.map.baidu.com/api?v=3.0&ak=SWxEiZYKTcujcC6rTY5MvBsWHETIlT97"></script>
    <script type="text/javascript"
            src="http://api.map.baidu.com/library/AreaRestriction/1.2/src/AreaRestriction_min.js"></script>

</head>

<body>
<!--百度地圖容器-->
<div style="width:100%;height:100%;border:#ccc solid 1px;" id="dituContent"></div>
</body>
<script type="text/javascript">
    //建立和初始化地圖函式
    function initMap() {
        createMap();//建立地圖
        setMapEvent();//設定地圖事件
        addMapControl();//向地圖新增控制元件
    }

    //建立地圖函式_
    function createMap() {
        var map = new BMap.Map("dituContent");//在百度地圖容器中建立一個地圖
        var mapStyle = {style: "dark"};
        map.setMapStyle(mapStyle);
        var point = new BMap.Point(115.915423, 28.681691);//定義一箇中心點座標
        map.centerAndZoom(point, 7);//設定地圖的中心點和座標並將地圖顯示在地圖容器
        window.map = map;//將map變數儲存在全域性
    }

    //地圖事件設定函式
    function setMapEvent() {
        map.enableDragging();//啟用地圖拖拽事件,預設啟用(可不寫)
        map.enableScrollWheelZoom();//啟用地圖滾輪放大縮小
        map.enableDoubleClickZoom();//啟用滑鼠雙擊放大,預設啟用(可不寫)
        map.enableKeyboard();//啟用鍵盤上下左右鍵移動地圖
    }

    //地圖控制元件新增函式:
    function addMapControl() {
        //向地圖中新增縮放控制元件
        var ctrl_nav = new BMap.NavigationControl({anchor: BMAP_ANCHOR_TOP_RIGHT, type: BMAP_NAVIGATION_CONTROL_SMALL});
        map.addControl(ctrl_nav);
        //向地圖中新增縮圖控制元件
        var ctrl_ove = new BMap.OverviewMapControl({anchor: BMAP_ANCHOR_BOTTOM_RIGHT, isOpen: 0});
        map.addControl(ctrl_ove);
        //向地圖中新增比例尺控制元件
        var ctrl_sca = new BMap.ScaleControl({anchor: BMAP_ANCHOR_BOTTOM_RIGHT});
        map.addControl(ctrl_sca);
    }


    initMap();//建立和初始化地圖
</script>
</html>

最終效果圖如下:
這裡寫圖片描述