geomap-old-readme.md 2.8 KB

GeoMap.js(旧版使用说明)

概述

  • GeoMap.js是一个绘制矢量地图控件,基于jQuery、Raphael,

  • 支持geoJSON格式的数据源

  • 通过Raphael绘制地图,默认采用svg,低版本IE采用vml,兼容性较好

文件结构

china.json          // 中国地图数据
geomap.js           // 模块压缩文件
geomap.debug.js // 模块源文件

使用方法

使用sea.js加载

//需要先加载jquery和raphael模块
var GeoMap = require('(路径)/geomap');

实例化一个GeoMap对象

var map = new GeoMap(element, width, height);
// element: 放置map的位置,支持tagName/#id/.class

渲染一张地图

// 渲染地图的参数
var config = {
    // 数据文件的路径
    srcPath: '../json/china.map.data.json',
    // 缩放比例,x轴和y轴采用不同的缩放比例
    scale:{x:2,y:3}
};

// 渲染地图的回调函数
function callback(){
    // 可以对地图进行操作
}

// 渲染
map.render(config, callback);

操作地图上的地区

// 实例化的GeoMap对象里,拥有一个mapPaths属性,其中记录了当前地图上的所有地区
map.render(function(){
    // 在回调函数中,给各个地区增加鼠标经过事件
    $.each(map.mapPaths, function(k, v){

        v.hover(function(){
            this.attr({fill:"#369"});
        });

    });
});

画点

// 定义一个点(如果半径大,就是一个圆形)
var oPoint = {
    "x" : 10.1,     // 经度(必须)
    "y" : 100.2,    // 纬度(必须)
    "r" : 1,        // 点的半径
    "opacity" : 0.5,    // 点的透明度
    "fill" : "#238CC3",     // 点的颜色
    "stroke" : "#238CC3",   // 外边框的颜色
    "stroke-width" : 0.1    // 外边框的粗度
};

// 把点画到地图上
var p = map.setPoint(oPoint);   

// 把点删掉
p.remove();

画线

// 数组中的坐标对象就是线段上的各个点
var aPoints = [{x:1,y:2},{x:2,y:3},…];

// 定义一条线
var oLine = {
    "ps": aPoints           // ps属性就是点数组
    "stroke": "#369"        // 线的颜色
    "stroke-width": 0.5     // 线的粗细
};

// 把线画出来
var l = map.setLine(oLine);

// 把线删掉
l.remove();

缩放

map.viewScale('up');    // 放大
map.viewScale('down');  // 缩小
// 可以设置两个dom节点作为放大和缩小按钮,用点击事件调用放大和缩小方法
// 在放大状态时,可以拖动地图

平移地图

//在同一张画布上重复渲染不同的地图时,由于地图尺寸比例不一致,造成地图无法自动居中。
//默认情况下,会根据geoJSON的尺寸,自动让地图居左,如果想要让地图居中,需要在渲染地图的设置项里增加translate属性
var config = {
    ...
    // x轴偏移1度坐标,y轴不偏移;
    'translate':{
        'x' : 1,
        'y' : 0
    },
    ...
};