/GeoMap

JavaScript geoJSON map

Primary LanguageJavaScriptMIT LicenseMIT

GeoMap.js

DEMO: http://xbingoz.com/demo/geomap/example.html

概述

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

  • 支持geoJSON格式的数据源

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

文件结构

json/				//地图数据
old/				//旧版(实现方法有问题,存做标本)
src/				//开发文件
geomap-0.X.X.js		//发布文件

使用方法

基本操作:

//实例化一个GeoMap对象
var map = new GeoMap();
	
//载入geoJSON格式的数据
map.load(geo_json_data);	

//渲染
map.render();

设置:

//实例化GeoMap对象时可以传入设置项目的对象
var map = new GeoMap(cfg);
//不传参数时, 将使用内置的默认参数
	defaultCfg = {
    //地图所在的位置
    container: 'body',
    //地图的偏移量, eg:{x:10, y:10}
	  offset: null,
    //地图的缩放比例, eg:{x:10, y:10}
		scale: null,
    //地图样式
		mapStyle: {
			'fill': '#fff',
			'stroke': '#999',
			'stroke-width': 0.7
		},
    //是否显示鼠标跟随的十字刻度线
		crossline:{
			enable: false,
			color: '#ccc'
		},
    //地图背景
	  background:'#fff'
	};

指定渲染位置:

//GeoMap默认在body元素下生成地图
//实例化时可以设置container指定渲染位置
var map = new GeoMap({
	container: '#map'
});

缩放与偏移:

//geoJSON数据是真实地理经纬度数据
//转换到页面显示需要设置偏移和缩放
var map = new GeoMap({
	//偏移:确定地图位置
	offset: {
		x: 0, y: 0	//世界地图默认不需位移
	},
	//缩放:确定地图大小
	scale:{
		x: 2.6, y: 3
	}
});
//如果不设置偏移,脚本会自动计算路径数据,并让地图从左上角开始渲染

属性绑定:

//通过Raphael的data方法绑定地区的属性

操作地图上的区块:

var map = new GeoMap(config);
map.load(data);
map.render();

//渲染之后,map的shapes属性即地图上的各个区块,可以添加事件
map.shapes.hover(function(){
	...
});

画点:

//map对象有一个setPoint方法,该方法接受一个坐标参数(取实际经纬度坐标)
//比如北京坐标是x: 116.4551, y: 40.2539
point = map.setPoint({x: 116.4551, y: 40.2539});

//点是用Raphael的circle方法画出的,可以通过属性设置,更改点的大小
point.attr('r', 5);

计算一个点的实际经纬度:

map.getGeoPosition([10, 10]); //=> 页面地图上10,10这个点的实际经纬度坐标