微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

javascript – AmCharts – AmMap与自定义地图显示颠倒

我按照AmCharts上的教程创建了一个自定义地图,
但是使用了我们之前系统中的SVG(英国的一个例子,但我有大约2000个自定义SVG的定义区域/地区/区域集合).

虽然地图显示没有问题,但它显示为颠倒.

有人可以帮助翻转那些没有重新创建所有SVG的东西吗?

你可以在这里看到问题http://jsfiddle.net/aZt8N/830/

AmCharts.ready(function() {
    map = new AmCharts.AmMap();
    map.pathToImages = "http://www.ammap.com/lib/3/images/";
    //map.panEventsEnabled = true; // this line enables pinch-zooming and dragging on touch devices
    map.balloon.color = "#000000";

    var dataProvider = {
        mapVar: AmCharts.maps.UK,getAreasFromMap: true
    };

    map.dataProvider = dataProvider;
    map.write("mapdiv");
});

示例SVG(JSON格式):

{
    "id": "19","title": "Isle of Man","d": "M-294128.0419983654 6005604.579318236 L-297849.15 6002052.63 L-302960.48 6004919.03 L-307536.97 6003878.02 L-308772.14 6004362.52 L-305875.18 6009275.65 L-304770.50193180586 6012664.048443736 L-302096.82 6020865.08 L-298362.66970319534 6023706.069639378 L-296413.32 6025189.16 L-291628.35136520385 6032625.148624786 L-288841.99 6036955.24 L-283264.74 6040009.53 L-281429.49 6039424.07 L-280324.93 6038202.8 L-280267.3142244041 6037728.901568649 L-278638.37 6024330.59 L-281236.71112765424 6021135.176051484 L-282416.08 6019684.8 L-283956.92 6015313.33 L-287114.60612506856 6012299.189836851 L-288129.6779798481 6011330.2623612285 Z"
                        }

解决方法

在这里实现了这个问题的解决方案:

http://jsfiddle.net/Fresh/rzL509qr/

结果是:

我将是第一个注意到它不是最优雅的解决方案,因为它涉及在AmCharts渲染它的输出之后使用SVG矩阵变换.我还在应用程序中引入了jQuery来应用代码来执行转换(您可以在以后将其更改为javascript,我只是为了方便而使用jQuery).

解决方案涉及转换包含地图的组(即’g’元素),即

<g transform="matrix(1 0 0 -1 0 370)">

该变换矩阵反映了通过图像中心的水平线的所有内容. “370”是SVG的高度(370px).

我使用以下方法应用了这种矩阵变换:

$('svg g:nth-child(8)').attr('transform','matrix(1 0 0 -1 0 370)');

更新

虽然此解决方案正确地反转了坐标,但是上拉/下拉功能已被打破(doh!).我不会删除这个答案,因为它可能有所帮助,希望有人会对如何在这种情况下反转鼠标y轴有一个明智的想法!

您可以尝试应用此转换,反转左右箭头,但禁用拖动工具.这应该允许用户在地图周围直观地导航,但是没有使用鼠标的便利.

原文地址:https://www.jb51.cc/js/157675.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐