在选择美国州时,我想关注美国州。代码是这样的:
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.js 和 jquery-1.8.3.min.js
这是加载后的 map :
这是选择州后的 map :
有什么线索吗?
最佳答案
将 onRegionSelected
方法的定义更改为:
onRegionSelected: function(e, code, isSelected, selectedRegions){
map.setFocus(selectedRegions);
}
setFocus
方法预计最多接收 3 个参数。第一个是比例尺、区域代码或区域代码数组。第二个和第三个参数是指定视口(viewport)中心的 centerX
和 centerY
。
您发送数字 9
作为第一个参数,然后第二个参数发送事件对象,奇怪的事情发生了。
此外,如果您为 map 设置 regionsSelectableOne: false
,您将看到它缩放到适当的级别以包括所选区域(州)。
关于javascript - Jvectormap 标记在 setFocus 调用后绘制错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14921240/