Add Google Maps Layer | Nostra Developer

Add Google Maps Layer

ชั้นข้อมูลแผนที่ที่ NOSTRA จัดเตรียมไว้แบ่งเป็น 2 ประเภทคือชั้นข้อมูล Basemap และชั้นข้อมูลพิเศษ (Special Layer) นอกจากนี้ NOSTRA ได้เพิ่มความสามารถของ Google Maps นำมาจัดเป็นอีกหนึ่งชั้นข้อมูล Basemap

Google Maps Layer

Google Maps Type

Code Example


Javascript
HTML
CSS


var map, googleLayer, nostraGuideLayer;

nostra.onready = function () {
    nostra.config.Language.setLanguage(nostra.language.E);
    initialize();
};

function initialize() {
    map = new nostra.maps.Map("map", {
        id: "mapTest",
        logo: false,
        scalebar: false,
        basemap: "streetmap",
        slider: false,
        level: 15,
        lat: 13.722944,
        lon: 100.530449,
        country: 'TH'
    });

    map.events.load = function () {
        /* Create Google Layer */
        googleLayer = new nostra.maps.layers.GoogleMapsLayer(map, {
            googleKey: {YOUR_GOOGLE_KEY},
            mapType: "roadmap",
            language: "TH",
            traffic: false,
            transit: false
        });

        googleLayer.events.load = () => spinner(false)

        /* Create nostraGuideLayer */
        nostraGuideLayer = new nostra.maps.layers.AGSLayer(map, {
            id: "nostraGuide",
            type: "dynamic",
            url: "https://mapdynamic.nostramap.com/arcgis/rest/services/NOSTRAGuide/MapServer",
            token:{YOUR_NOSTRA_KEY}
        });

        map.addLayer(googleLayer);
        map.addLayer(nostraGuideLayer);

    }

    map.events.click = (e) => identify(e)
}

function identify(e) {
    spinner(true)
    map.map.infoWindow.hide();

    let lat = e.mapPoint.getLatitude();
    let lon = e.mapPoint.getLongitude();

    nostraGuideLayer.identify(lat, lon, function (response) {
        let result = response.result;
        if (result != null && result.length > 0) {
            showInfoWindow(e, result[0])
        }
        spinner(false)
    })
}

function onTrafficCheck(event) {
    event.checked ? googleLayer.setTrafficVisible(true) : googleLayer.setTrafficVisible(false);
}

function onTransitCheck(event) {
    event.checked ? googleLayer.setTransitVisible(true) : googleLayer.setTransitVisible(false);
}

/* UI Interect function */
function switchMenu(type) {
    let TrafficLayer = document.getElementById("TrafficLayer"), 
        TransitLayer = document.getElementById("TransitLayer");
    switch (type) {
        case "Roadmap":
            googleLayer.setMapType("roadmap")
            TrafficLayer.disabled = false;
            TransitLayer.disabled = false;
            break;
        case "Hybrid":
            googleLayer.setMapType("hybrid")
            TrafficLayer.disabled = false;
            TransitLayer.disabled = false;
            break;
        case "Terrain":
            googleLayer.setMapType("terrain")
            TrafficLayer.disabled = false;
            TransitLayer.disabled = false;
            break;
        case "Satellite":
            googleLayer.setMapType("satellite")
            TrafficLayer.disabled = true;
            TransitLayer.disabled = true;
            break;

        default:
            break;
    }

}

function showInfoWindow(e, result) {
    var strInfo = "";
    for (var key in result.feature.attributes) {
        var valResult = result.feature.attributes[key];
        strInfo += "<b>" + key + "</b>: " + ((valResult != "NULL") ? valResult : "-") + "<br />";
    }
    map.map.infoWindow.setTitle("Identify Result");
    map.map.infoWindow.setContent(strInfo);
    map.map.infoWindow.show(e.screenPoint, map.map.getInfoWindowAnchor(e.screenPoint));
    spinner(false);
}

function spinner(isLoading) {
    const spin = document.getElementById("spinner");
    isLoading ? spin.style.display = "flex" : spin.style.display = "none";
}


** สามารถดูวิธีการติดตั้ง Tool & Editor สำหรับ Angular ได้ที่ "ขั้นตอนการติดตั้ง Tool & Editor สำหรับ Angular"