JVectorMap API 之 数据格式

如果你对 JVectorMap 不太了解,请先阅读《开源JS地图插件JVectorMap介绍》。

使用 Converter 生成的 JVectorMap 数据文件大小跟数据源大小和精度相关,数据主要存储于文件中的 path 字段,它代表了地图中所有区域的路径信息。数据文件格式如下:

jQuery.fn.vectorMap('addMap', 'afg_mill_en',
    {
        "insets": [
            {
                "width": 900.0,
                "top": 0,
                "height": 642.33050485257525,
                "bbox": [
                    {"y": -4509613.1491, "x": 6738787.2362},
                    {"y": -3365824.1687, "x": 8341404.6963}
                ],
                "left": 0
            }
        ],
        "paths": {
            "24": {
                "path": "M485.72,476.51l-0.74 ... Z",
                "name": "Paktika"
            },
        },
        "height": 642.33050485257525,
        "projection": {"type": "mill", "centralMeridian": 0.0},
        "width": 900.0
    }
);

下面详细说明这些字段的意义 继续阅读

JVectorMap API 之 Converter

如果你对JVectorMap不太了解,请先阅读《开源JS地图插件JVectorMap介绍》。

Converter 是 JVectorMap 提供给我们把 shapefile 数据文件转化为地图数据的转化器。它是基于 Python 编写的,官方建议版本 >=2.7(貌似 3.x2.x 语法有不少区别,不要使用 3.x 以及以后版本)。另外还需要依赖库 Anyjson , GDAL 和 Shapely

Converter依赖库安装

Linux 下手动安装

# install anyjson
$ wget https://pypi.python.org/packages/source/a/anyjson/anyjson-0.3.3.tar.gz
$ tar zxvf anyjson-0.3.3.tar.gz && cd anyjson-0.3.3
$ python setup.py build && python setup.py install
# install Shapely
$ wet "https://pypi.python.org/packages/source/S/Shapely/Shapely-1.4.0.tar.gz#md5=8194c567cfdcfe0b458e041366924270"
$ tar zxvf Shapely-1.4.0.tar.gz && cd Shapely-1.4.0
$ python setup.py build && python setup.py install
# install GDAL
$ wget https://pypi.python.org/packages/source/G/GDAL/GDAL-1.11.0.tar.gz
$ tar zxvf GDAL-1.11.0.tar.gz && cd GDAL-1.11.0
$ python setup.py build && python setup.py install

继续阅读

JVectorMap API之WorldMap

如果你对JVectorMap不太了解,请先阅读《开源JS地图插件JVectorMap介绍》。WorldMap非常重要的类,它可以创建地图、画路径、绑定事件。

WorldMap构造方法参数

名称类型描述
mapString地图数据的名称。格式一般为:territory_proj_langterritoryISO 3166 标准定义的国家代码,proj 为投影名称,lang为国家或地区语言。
backgroundColorString地图背景色。
zoomOnScrollBoolean如果为true可以使用鼠标滚动缩放,默认为true。
zoomMaxNumber表示地图可以缩放的最大比例,默认为8。
zoomMinNumber表示地图可以缩放的最小比例,默认为1。
zoomStepNumber表示使用+ / -按钮缩放地图的倍数,默认是1.6。
regionsSelectableBoolean如果设置为true,区域可以被选择,默认为false。
regionsSelectableOneBoolean同时只可以选择一个区域,默认为false。
markersSelectableBoolean标记是否可选,默认为false;
markersSelectableOneBoolean同时只可以选择一个标记,默认为false。
regionStyleObject为地图区域设置样式。每个区域或者标记有四种状态:initial (默认状态), hover (鼠标经过区域或者标记时), selected (区域或标记被选择时), selectedHover (区域或标记被选择时鼠标经过)。每个状态都可以设置样式,默认参数值为:{initial:{fill:'white',"fill-opacity":1,stroke:'none',"stroke-width":0,"stroke-opacity":1},hover:{"fill-opacity":0.8},selected:{fill:'yellow'},selectedHover:{}}
markerStyleObject给标记设置样式。其中r代表圆的半径,默认参数值为:
{initial:{fill:'grey',stroke:'#505050',"fill-opacity":1,"stroke-width":1,"stroke-opacity":1,r:5},hover:{stroke:'black',"stroke-width":2},selected:{fill:'blue'},selectedHover:{}}
markersObject | Array地图初始化时设置标记。如果值为数组,标记的codes将会使用数组索引作为字符串表示。一般每组标记都会包含latLng (数字数组,纬经度), name (标记上现实的名字) 和样式内容。
seriesObject这个对象包含 markersregions 键值,请参看DataSeries
focusOnObject | String这个参数用来设置地图viewport的初始positionscale。例如设置焦点为地图中心并且放大2倍可以使用下面的值:
{x: 0.5,y: 0.5,scale: 2}
selectedRegionsArray | Object | String设置初始选择区域
selectedMarkersArray | Object | String设置初始选择标记
onRegionLabelShowFunction(Event e, Object label, String code)将在区域标签将被显示前调用。
onRegionOverFunction(Event e, String code)鼠标悬停在区域标签上方时调用。
onRegionOutFunction(Event e, String code)鼠标从在区域标签移走时调用。
onRegionClickFunction(Event e, String code)将在区域标签将被点击时调用。
onRegionSelectedFunction(Event e, String code, Boolean isSelected, Array selectedRegions) 区域被选择时调用。回调方法里面的参数isSelected表示区域是否被选择。参数selectedRegions被选择区域的代码。
onMarkerLabelShowFunction(Event e, Object label, String code) 标记被展示前调用。
onMarkerOverFunction(Event e, String code)鼠标在标记上面悬停时触发。
onMarkerOutFunction(Event e, String code)鼠标从标记上方移出时触发。
onMarkerClickFunction(Event e, String code)点击标记时触发。
onMarkerSelectedFunction(Event e, String code, Boolean isSelected, Array selectedMarkers) 标记被选择时触发。回调方法里面的参数isSelected表示区域是否被选择。参数selectedRegions被选择区域的代码。
onViewportChangeFunction(Event e, Number scale)地图的窗口改变时触发(地图移动或缩放视图)。
继续阅读

JVectorMap API之DataSeries

如果你对JVectorMap不太了解,请先阅读《开源JS地图插件JVectorMap介绍》。DataSeries也就是数据序列,它主要包含了标记(markers)和区域(regions)信息内容。

DataSeries构造参数

params为构造数据序列的参数,类型为对象,其内部属性信息如下:

名称类型描述
valuesArray设置可视化数据
attributeString表示可视化数据数字或者颜色属性,内容通常为:1,标记(markers)和区域(regions)共有属性:fill, stroke, fill-opacity, stroke-opacity;2,仅限于标记(markers)属性:r (radius)。
scaleArray用来表示不同范围的数据表现方式,不同范围数据将会有不同颜色。其中第一个代表数值最小的颜色,依次推断,最后一个代表数值最大的颜色。默认为['#C8EEFF', '#0071A4']
normalizeFunctionFunction|String这个参数可能是方法或者字符串。如果是字符串会有两个值:linear 或者 polynomial,默认为linear。如果是方法则表示用来映射输入数据到提供的scale数据。
minNumber数据集的最小值。如果没有提供,将会自动运算。
maxNumber数据集的最大值。如果没有提供,将会自动运算。
继续阅读