如何利用JavaScript API绘制高德地图

JavaScript022

如何利用JavaScript API绘制高德地图,第1张

这里,我用的是HTML5页面进行设计的。那么,首先创建一个HTML5文件,

如下图所示:

接着,设置下禁止浏览器窗口大小改变地图大小,并引入地图核心JS

<meta name="viewport" content="initial-scale=1.0,user-scalable=no">

设置因浏览器大小改变地图大小,进行禁止;引入地图核心js前,记得到官网上申请密钥

如下图所示:

地图如何在页面上展示出来,这里就需要一个地图容器。于是,我在<body></body>中设置一个div,作为地图容器,

如下图所示:

接着,设置下body、div元素的样式,如宽度、高度、字体以及字体大小等。这里,必须要设置下宽度和高度,且使用百分比,这样让其自适应,

如下图所示:

然后,编写生成地图的核心JS,指定地图的经纬度,地图为2D的,放大级别zoom,

如下图所示:

最后,将地图初始化函数放到body中的onload事件中,让初始化页面就加载地图,

如下图所示:

7

但是,我发现这样写的话,地图始终不出来;于是,我仔细检查下,结果发现地图容器的ID和初始化函数地图ID不一致,还有没有设置html元素的样式,导致地图始终显示不了。修改完了之后,重新刷新浏览器,地图显示出来了

three.js创建地图的方法:

1.定义html页面

<!DOCTYPE html>

<html>

<head>

<title>Three.js Step Tutorial</title>

<style>

 body {

  margin: 0px

  background-color: #fff

  overflow: hidden

 }

</style>

</head>

<body>

<script src="js/three.min.js"></script>

<script src="js/three-tut.js"></script>

</body>

</html>

2、编写动画脚本anotation.js

var camera定义相机

var scene定义场景画布

var renderer定义渲染入口

var mesh定义恢复

init()初始化画布

animate()开始动画

函数定义

function init() {

scene = new THREE.Scene()

camera = new THREE.PerspectiveCamera( 70, window.innerWidth / window.innerHeight, 1, 1000)

var light = new THREE.DirectionalLight( 0xffffff )

light.position.set( 0, 1, 1 ).normalize()

scene.add(light)

var geometry = new THREE.CubeGeometry( 10, 10, 10)

var material = new THREE.MeshPhongMaterial( { ambient: 0x050505, color: 0x0033ff, specular: 0x555555, shininess: 30 } )

mesh = new THREE.Mesh(geometry, material )

mesh.position.z = -50

scene.add( mesh )

renderer = new THREE.WebGLRenderer()

renderer.setSize( window.innerWidth, window.innerHeight )

document.body.appendChild( renderer.domElement )

window.addEventListener( 'resize', onWindowResize, false )

render()

}

function animate() {

mesh.rotation.x += .04

mesh.rotation.y += .02

render()

requestAnimationFrame( animate )

}

function render() {

renderer.render( scene, camera )

}

形状变换

function onWindowResize() {

camera.aspect = window.innerWidth / window.innerHeight

camera.updateProjectionMatrix()

renderer.setSize( window.innerWidth, window.innerHeight )

render()

}

3、运行以上程序,效果如下:

室内地图制作流程说明

一、获取测试点室内分布图层

室内分布图可能是CAD或其他格式。若为CAD格式图片,如下图

需删除图片中多余连线及天线信息,删除后效果如下图

保存为pdf格式,然后用pdf工具打开,利用快拍工具,如下图所示

选择图片区域(图片区域选择时请尽量减少周边的空白,如下图所选),确定后在photoshop中新建一个文件后粘贴即可。

二、调整室内分布图角度,转换图片 

部分室内分布图可能不是正南正北,需要用photoshop工具将其调整一定角度,

调整到正确的方向,使其和google earth上的方向保持一致。最后将图层转化成JPG格式(像素在1080*800以上,文件大小在100K左右)。记录好JPG图片的像素。 例如:

三、图片名称

图片名称格式:025#001#JLHY#FU#03#03.jpg 025:区号

001:1号网格(建筑在网格外则写999)   JLHY:金陵会议的缩写(大写) FU:地上(地下为FD) 03#03:3层(起始和结束楼层)

注意图片名称中的“#”。

四、选择必测、可选点、校准点 

在图片上用红色圆点标注必测点,蓝色点标注可选点,绿色的为校准点。

五、在google earth上获取三个点的经纬度

1、打开google earth,找到所需要的测试点建筑。在建筑的边角上选取3个较为明显的点,获取其经纬度信息。注意:三点的分布要分散,最后的结果误差才会小。

2、获取3个点的经纬度完成后,如格式不是度,请在工具>选项界面中设置为‘度’: