首頁 / 浏覽問題 / WebGIS / 問題詳情
iClient for Openlayers如何設置比例尺
269EXP 2025年04月16日

在(zài)iObjects.java裏可以(yǐ)通過

m_MapControl.getMap().setVisibleScales(new double[]{(double) 1 /250000, (double) 1 /100000, (double) 1 /50000, (double) 1 /25000, (double) 1/10000, (double) 1/5000, (double) 1/2500, (double) 1/1250});
設置地(dì / de)圖的(de)比例尺,請問在(zài)iClient for Openlayers裏應該如何設置?

var scales = [50000, 20000, 10000, 5000, 2500, 1500, 1000, 500, 250, 100, 50];
var dpi = 96;
var inchesPerMeter = 39.37;
var resolutions = scales.map(scale => {
    const resolution = scale / (dpi * inchesPerMeter);
    return resolution;
});

......

ol.supermap.initMap(url, {
        mapOptions: {
            target: 'map',
            view: new ol.View({
                center: [10000000, 4000000],
                zoom: 6,
                resolutions: resolutions,
                minResolution: resolutions[resolutions.length - 1],
                maxResolution: resolutions[0],
                constrainResolution: true
            }),
            controls: [
                new ol.supermap.control.ScaleLine(),
                new ol.control.Zoom({ target: 'zoomDiv' })
            ]
        }
    })

我通過以(yǐ)上(shàng)代碼對比例尺進行設置,然後設置在(zài)地(dì / de)圖上(shàng)移動時(shí)會顯示當前狀态,但這(zhè)個(gè)現實的(de)狀态和(hé / huò)ol.supermap.control.ScaleLine()控件顯示的(de)比例尺似乎不(bù)一(yī / yì /yí)緻

1個(gè)回答

您可以(yǐ)參考這(zhè)個(gè),用的(de)是(shì)OpenLayers自帶的(de)比例尺控件,默認是(shì)這(zhè)種樣式:https://iclient.supermap.io/examples/leaflet/editor.html#controler_scaleline

您可以(yǐ)獲取當前的(de)地(dì / de)圖比例尺,自定義比例尺樣式添加到(dào)前端

1,191EXP 2025年04月16日
這(zhè)個(gè)是(shì)iClient for leaflet的(de)地(dì / de)圖吧,這(zhè)個(gè)用的(de)也(yě)是(shì)openlayes的(de)比例尺控件嗎?
不(bù)好意思,我看錯位置了(le/liǎo),意思是(shì)這(zhè)樣的(de),ol.supermap.control.ScaleLine()也(yě)是(shì)基于(yú)OpenLayers的(de)控件,隻有這(zhè)種樣式
我這(zhè)邊主要(yào / yāo)想知道(dào)的(de)還是(shì)應該如何在(zài)iClient for Openlayers的(de)地(dì / de)圖裏設置比例尺數組

目前就(jiù)是(shì)我做了(le/liǎo)一(yī / yì /yí)個(gè)比例尺數組放了(le/liǎo)進去,但顯示的(de)比例尺和(hé / huò)左下角控件顯示的(de)比例尺明顯對不(bù)上(shàng),

所以(yǐ)想請教一(yī / yì /yí)下這(zhè)個(gè)添加比例尺數組正确的(de)方法
您看您的(de)比例尺數組和(hé / huò)加載的(de)瓦片url中的(de)scale是(shì)否一(yī / yì /yí)緻

我試了(le/liǎo)您的(de)代碼,沒有用initMap,直接設置的(de)map,可以(yǐ)用map.getView().targetResolution_,和(hé / huò)計算的(de)resolutions值是(shì)一(yī / yì /yí)樣的(de),說(shuō)明設置是(shì)生效的(de)

map = new ol.Map({
    target: 'map',
    view: new ol.View({
        center: [11609967.454289619,3896311.0034362925],
        zoom: 2,
        resolutions: resolutions,
        constrainResolution: true
    }),
});
感謝解答
也(yě)就(jiù)是(shì)說(shuō)代碼是(shì)沒問題的(de),隻是(shì)ScaleLine并不(bù)是(shì)用一(yī / yì /yí)厘米等于(yú)實際多少米表示而(ér)造成的(de)視覺偏差?
...