【问题标题】:AMChart SVG Map - Zoom to fit all countriesAMCharts SVG 地图 - 缩放以适合所有国家/地区
【发布时间】:2015-07-15 20:10:21
【问题描述】:

我正在尝试自动缩放到我地图中的所有国家/地区。如果我使用“groupId”选项对国家/地区进行分组,它会起作用,但我也有一个不需要的组悬停。我需要一个悬停/选择,但想放大到它们适合边界的国家/地区。

这里是一个例子:http://jsfiddle.net/wiesson/efbnsmpd/

地图数据示例:

dataProvider: {
    map: "worldHigh",
    areas: [{
        "id": "AT",
        "customData": "Austria",
        "link": "austria",
    }, {
        "id": "HR",
        "customData": "Croatia",
        "link": "croatia",
    }, {
        "id": "FR",
        "customData": "France",
        "link": "france",
    }, {
        "id": "DE",
        "customData": "Germany",
        "link": "germany",
    }, {
        "id": "GR",
        "customData": "Greece",
        "link": "greece",
    }, {
        "id": "IT",
        "customData": "Italy",
        "link": "italy",
    }, {
        "id": "MA",
        "customData": "Malta",
        "link": "malta",
    }, {
        "id": "PT",
        "customData": "Portugal",
        "link": "portugal",
    }, {
        "id": "ES",
        "customData": "Spain",
        "link": "spain",
    }, {
        "id": "CH",
        "customData": "Switzerland",
        "link": "switzerland",
    }, {
        "id": "TR",
        "customData": "Turkey",
        "link": "turkey",
    }, {
        "id": "GB",
        "customData": "United Kingdom",
        "link": "united-kingdom"
    }]
}

我是否需要根据我的国家/地区计算 lat/lng(以某种方式)然后缩放? (例如http://docs.amcharts.com/3/javascriptmaps/AmMap#zoomTo(zoomLevel、zoomX、zoomY、立即))

【问题讨论】:

    标签: javascript svg amcharts ammap


    【解决方案1】:

    可能有更好的方法。 zoomToGroup 函数可以接受区域对象数组(不是 id,而是真实对象)。所以你可以这样做:

    map.addListener("init", function (event) {
        var zoomToAreasIds = ['AT', 'HR', 'FR', 'DE', 'GR', 'ID', 'MA', 'PT', 'ES', 'CH', 'TR', 'GB'];
        var zoomToAreas = [];
        var area;
        for(var i = 0; i < zoomToAreasIds.length; i++) {
            if (area = map.getObjectById(zoomToAreasIds[i]))
                zoomToAreas.push(area);
        }
        map.zoomToGroup(zoomToAreas);
    });
    

    这是你更新的小提琴:

    http://jsfiddle.net/amcharts/efbnsmpd/6/

    【讨论】:

    • 谢谢!我没有看到描述的最后一部分。
    • @martynasma 你能帮我用 amchart4 重新创建这个答案吗
    【解决方案2】:

    我自己想出了一个可行的解决方案,如下所述:http://jsfiddle.net/f1Ljtawm/embedded/result,js,html,css/

    map.addListener('init', function () {
        map.zoomToGroup("zoomed-group");
    
        function toggleMapObjectAlpha(e) {
            var alpha = e.type == "rollOverMapObject" ? .3 : .8;
            e.event.target.setAttribute("fill-opacity", alpha);
        }
    
        map.addListener('rollOverMapObject', toggleMapObjectAlpha);
        map.addListener('rollOutMapObject', toggleMapObjectAlpha);
     });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-01-20
      • 1970-01-01
      • 2020-01-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-04
      相关资源
      最近更新 更多