javascript - Jvectormap 标记在 setFocus 调用后绘制错误

标签 javascript jvectormap

在选择美国州时,我想关注美国州。代码是这样的:

    var ddd = {
        "US-VA": 1,
        "US-PA": 1,
        "US-TX": 1,
        "US-RI": 1,
        "US-SC": 1,
        "US-OR": 1,
        "US-CO": 1,
        "US-KY": 1
    };
    var map = {};

  $(function(){
    map = new jvm.WorldMap({
        map: 'us_aea_en',
        backgroundColor: '#EEEEEE',
        container: $('#us-map'),
        regionsSelectable: true,
        regionsSelectableOne: true,
        regionStyle: {
            initial: {
                fill: '#777777',
                "fill-opacity": 1,
                stroke: 'none',
                "stroke-width": 0,
                "stroke-opacity": 1
            }
        },
        series: {
            regions: [{
                values: ddd,
                scale: ['#FF6633', '#FF6622'],
                normalizeFunction: 'linear'
            }]
        },
        markerStyle: {
        initial: {
        fill: '#F8E23B',
        stroke: '#383f47'
        }
        },
        markers: [
            {latLng: [41.17, -74.92], name: 'New York'},
            {latLng: [34.06, -118.25], name: 'Los Angeles'},
            {latLng: [29.98, -95.54], name: 'Houston'},
            {latLng: [42.42, -71.3], name: 'Boston'},
            {latLng: [32.79, -96.81], name: 'Dallas'},
            {latLng: [32.79, -79.95], name: 'Charleston'},
            {latLng: [38.02, -122.89], name: 'San Francisco'},
            {latLng: [35.17, -106.86], name: 'Albuquerque'},
            {latLng: [35.72, -97.99], name: 'Oklahoma City'},
            {latLng: [61.22, -149.91], name: 'Anchorage'},
            {latLng: [21.47, -158.08], name: 'Honolulu'}
        ],
        //onRegionSelected: function(event, isSelected, selectedRegions){
        onRegionSelected: function(selectedRegions){
            map.setFocus(9, selectedRegions);
        }
      });
    });

当我选择一个区域时,标记绘制在错误的位置。可以看到一个小的偏移,就像 map 尝试 setFocus 一样,但标记位于左上角。 我使用 jvectormap-1.1.1.min.jsjquery-1.8.3.min.js

这是加载后的 map : enter image description here

这是选择州后的 map : enter image description here

有什么线索吗?

最佳答案

onRegionSelected 方法的定义更改为:

onRegionSelected: function(e, code, isSelected,  selectedRegions){
     map.setFocus(selectedRegions);
}

setFocus 方法预计最多接收 3 个参数。第一个是比例尺、区域代码或区域代码数组。第二个和第三个参数是指定视口(viewport)中心的 centerXcenterY

您发送数字 9 作为第一个参数,然后第二个参数发送事件对象,奇怪的事情发生了。

此外,如果您为 map 设置 regionsSelectableOne: false,您将看到它缩放到适当的级别以包括所选区域(州)。

关于javascript - Jvectormap 标记在 setFocus 调用后绘制错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14921240/

相关文章:

javascript - setState() 不会立即改变状态

javascript - 在 jVectorMap 上的一些圆圈标记上放置不同的描边颜色和宽度

javascript - 我的代码由于某种原因显示 NaN 而不是数字

javascript - 使用 JavaScript 和 CSS 将一个 div 与另一个 div 重叠时出现问题

jquery - JvectorMaps 的不同颜色标记

javascript - SVG 查找路径的旋转 Angular

jvectormap OnClick 专注于欧洲

javascript - JVectorMap:更新图例

javascript - Visual Studio - 为 HTML 模板和语法突出显示使用自定义脚本标记类型

javascript - 为什么 Testcafe 忽略 If Else If 语句的第一个条件