【高德地图API】如何制作自己的旅游地图?
“旅行的梦想并不遥远,只要一颗流浪四方的心。”——唐人立。
最早认识唐人立的时候,他还是大二的学生。他独自完成了“南京20年规划地图”。几年前,他完成了自己的第一本著作,逃学去旅行《一个人走世界——大学4年200城的旅行》。而现在,他正执行着他的“辞职去旅行”计划。他好心的老板还多给他发了一个月的工资。从南京,到台湾,从曼谷到斯里兰卡……2个月来,唐人立走过太多地方。是他原创的图片和文字,让我渐渐对自助游产生了兴趣,并决定记录下旅游的每一刻。
于是,我开始着手制作了这个旅行地图。可能它还不够完善,但的确它能给我们带来太多的正能量。希望有越来越多的人,能够用这种方式,去记录自己的旅途。THX。
代码其实很简单,简单的地图展示,简单的覆盖物,简单的信息窗口。
你要做的,其实只是申请一个key:http://yuntu.amap.com/datamanager/index.html
然后将下面的代码复制到你的网站上,并使用你自己的key。
第一步、地图展示
中心点坐标可以通过坐标拾取工具来找:http://zhaoziang.com/amap/picpoint.html
地图级别在国内建议12-18,国外建议在4-6.
var mapObj;
//初始化地图对象,加载地图
function mapInit(){
mapObj = new AMap.Map("iCenter",{center:new AMap.LngLat(121.498586,31.239637),
level:17});
addBuildings();
}
第二步、添加覆盖物
覆盖物,就是marker,这里用的默认的覆盖物。蓝色的,挺好看。
//实例化点标记
function addMarker(){
marker=new AMap.Marker({
icon:"http://webapi.amap.com/images/marker_sprite.png",
position:new AMap.LngLat(116.405467,39.907761)
});
marker.setMap(mapObj); //在地图上添加点
}
第三步、添加信息窗口
信息窗口用了自定义信息窗口,因为觉得兰蓝色的比较好看。
自定义信息窗口,分为3个部分,头,中间,尾巴。
关闭按钮也可以使用自定义图片。
//构建自定义信息窗体
function createInfoWindow(title,content){
var info = document.createElement("div");
info.className = "info";
// 定义顶部标题
var top = document.createElement("div");
top.className = "info-top";
var titleD = document.createElement("div");
titleD.innerHTML = title;
var closeX = document.createElement("img");
closeX.src = "http://webapi.amap.com/images/close2.gif";
closeX.onclick = closeInfoWindow; top.appendChild(titleD);
top.appendChild(closeX);
info.appendChild(top);
// 定义中部内容
var middle = document.createElement("div");
middle.className = "info-middle";
middle.innerHTML = content;
info.appendChild(middle); // 定义底部内容
var bottom = document.createElement("div");
bottom.className = "info-bottom";
var sharp = document.createElement("img");
sharp.src = "http://webapi.amap.com/images/sharp.png";
bottom.appendChild(sharp);
info.appendChild(bottom);
return info;
}
第四步、结果面板
结果面板只要是为了鼠标放在上面时,可以打开相应的信息窗口。
HTML结构:
<li><a href="javascript:void(0);" onmouseover="myOpen2();">曼谷</a></li>
<li><a href="javascript:void(0);" onmouseover="myOpen();">斯里兰卡</a></li>
信息窗口展开代码:
function myOpen(){
infoWindow.open(mapObj,marker.getPosition());
}
function myOpen2(){
infoWindow2.open(mapObj,marker2.getPosition());
}
--------------------------------------------------------------------------
全部源代码:
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>逃学去旅行</title>
<!-- 页面布局样式 -->
<link rel="stylesheet" type="text/css" href="http://api.amap.com/Public/css/demo.Default.css" />
<script language="javascript" src="http://webapi.amap.com/maps?v=1.2&key=【您的key】"></script>
<style>
#iCenter{float:left;width:600px;height:600px;}
.infobox{float:left;width:200px;height:600px;text-align:center;padding:10px 0;background:#efefef;}
.infobox h1{margin:0 0 20px;}
.infobox li a{text-decoration:none;font-size:20px;width:100%;display:block;padding:30px 0;border:1px dashed #ccc;border-width:1px 0;}
.infobox li a:hover{background:#ccc;}
</style>
</head>
<body onLoad="mapInit()">
<div id="iCenter"></div>
<div class="infobox">
<h1>逃学去旅行2</h1>
<ul>
<li><a href="javascript:void(0);" onmouseover="myOpen2();">曼谷</a></li>
<li><a href="javascript:void(0);" onmouseover="myOpen();">斯里兰卡</a></li>
</ul>
</div>
</div>
</body>
<script language="javascript">
var mapObj,toolBar;
var marker,marker2;
//初始化地图对象,加载地图
function mapInit(){
mapObj = new AMap.Map("iCenter",{center:new AMap.LngLat(88.505859,21.371244),level:4});
//地图中添加地图操作ToolBar插件
mapObj.plugin(["AMap.ToolBar"],function(){
toolBar = new AMap.ToolBar();
mapObj.addControl(toolBar);
});
//地图初始化时,在地图上添加一个marker标记,鼠标点击marker可弹出自定义的信息窗体
addMarker();
}
//添加marker标记
function addMarker(){
mapObj.clearMap();
marker = new AMap.Marker({
map:mapObj,
position:new AMap.LngLat(79.914551,6.871893), //位置-斯里兰卡
icon:"http://webapi.amap.com/images/0.png" //复杂图标
});
marker2 = new AMap.Marker({
map:mapObj,
position:new AMap.LngLat(100.546875,13.731381), //位置-曼谷
icon:"http://webapi.amap.com/images/0.png" //复杂图标
});
AMap.event.addListener(marker,'mouseover',function(){ //鼠标点击marker弹出自定义的信息窗体
infoWindow.open(mapObj,marker.getPosition());
});
AMap.event.addListener(marker2,'mouseover',function(){ //鼠标点击marker弹出自定义的信息窗体
infoWindow2.open(mapObj,marker2.getPosition());
});
} //实例化信息窗体
var infoWindow = new AMap.InfoWindow({
isCustom:true, //使用自定义窗体
content:createInfoWindow('斯里兰卡 <span style="font-size:11px;color:#F00;">采茶人</span>',"<img src='taoxue_1.jpg' style='width:92px;float:left;margin:0 5px 5px 0;'><img src='taoxue_2.jpg' style='width:92px;float:left;margin:0 5px 5px 0;'><img src='taoxue_3.jpg' style='width:92px;float:left;margin:0 5px 5px 0;'>尽管斯里兰卡人民并不富裕,但是他们对生活很满足。每一个微笑的斯里兰卡人的脸上,更多的是他们对待生活的热情。<a href='http://weibo.com/534004234'>@唐人立逃学去旅行</a>"),
size:new AMap.Size(300, 0),
offset:new AMap.Pixel(0, -50)//-113, -140
});
var infoWindow2 = new AMap.InfoWindow({
isCustom:true, //使用自定义窗体
content:createInfoWindow('曼谷 <span style="font-size:11px;color:#F00;">泰国泼水节</span>',"<img src='taoxue_7.jpg' style='width:92px;float:left;margin:0 5px 5px 0;'><img src='taoxue_6.jpg' style='width:92px;float:left;margin:0 5px 5px 0;'><img src='taoxue_5.jpg' style='width:92px;float:left;margin:0 5px 5px 0;'>如果说青春是一场说走就走的旅行,那么泰国的泼水节才更好地诠释着什么是青春。一起疯狂吧!<a href='http://weibo.com/534004234'>@唐人立逃学去旅行</a>"),
size:new AMap.Size(300, 0),
offset:new AMap.Pixel(0, -50)//-113, -140
}); //构建自定义信息窗体
function createInfoWindow(title,content){
var info = document.createElement("div");
info.className = "info";
// 定义顶部标题
var top = document.createElement("div");
top.className = "info-top";
var titleD = document.createElement("div");
titleD.innerHTML = title;
var closeX = document.createElement("img");
closeX.src = "http://webapi.amap.com/images/close2.gif";
closeX.onclick = closeInfoWindow; top.appendChild(titleD);
top.appendChild(closeX);
info.appendChild(top);
// 定义中部内容
var middle = document.createElement("div");
middle.className = "info-middle";
middle.innerHTML = content;
info.appendChild(middle); // 定义底部内容
var bottom = document.createElement("div");
bottom.className = "info-bottom";
var sharp = document.createElement("img");
sharp.src = "http://webapi.amap.com/images/sharp.png";
bottom.appendChild(sharp);
info.appendChild(bottom);
return info;
}
//关闭信息窗体
function closeInfoWindow(){
mapObj.clearInfoWindow();
}
function myOpen(){
infoWindow.open(mapObj,marker.getPosition());
}
function myOpen2(){
infoWindow2.open(mapObj,marker2.getPosition());
}
</script>
</html>
页面地址:http://zhaoziang.com/amap/taoxue.html
效果图:
【高德地图API】如何制作自己的旅游地图?的更多相关文章
- 【高德地图API】如何获得行政区域?如何制作行政规划图?
原文:[高德地图API]如何获得行政区域?如何制作行政规划图? 什么是行政规划图?如何获得每个行政区域的边界轮廓图?举例:重庆市 江北区.如图: 官方类参考:http://developer.amap ...
- 百度地图API和高德地图API资料集锦
[高德地图API]从零开始学高德JS API(五)路线规划——驾车|公交|步行 [高德地图API]从零开始学高德JS API(四)搜索服务——POI搜索|自动完成|输入提示|行政区域|交叉路口|自 ...
- 【高德地图API】汇润做爱地图技术大揭秘
原文:[高德地图API]汇润做爱地图技术大揭秘 昨日收到了高德地图微信公众号的消息推送,说有[一大波免费情趣用品正在袭来],点进去看了一眼,说一个电商公司(估计是卖情趣用品的)用高德云图制作了一张可以 ...
- 【高德地图API】一句话搞定webmap(一)——轻地图组件
原文:[高德地图API]一句话搞定webmap(一)——轻地图组件 摘要: 遥想当年,在APP中加入LBS元素相当困难:要刻苦学习java,要刻苦学习iOS开发,要刻苦学习javascript…… 而 ...
- 【高德地图API】从零开始学高德JS API(三)覆盖物——标注|折线|多边形|信息窗口|聚合marker|麻点图|图片覆盖物
原文:[高德地图API]从零开始学高德JS API(三)覆盖物——标注|折线|多边形|信息窗口|聚合marker|麻点图|图片覆盖物 摘要:覆盖物,是一张地图的灵魂.有覆盖物的地图,才是完整的地图.在 ...
- 【高德地图API】从零开始学高德JS API(一)地图展现——仙剑地图,麻点图,街景,室内图
原文:[高德地图API]从零开始学高德JS API(一)地图展现——仙剑地图,麻点图,街景,室内图 摘要:关于地图的显示,我想大家最关心的就是麻点图,自定义底图的解决方案了吧.在过去,marker大于 ...
- 高德地图api实现地址和经纬度的转换(python)
利用高德地图web服务api实现地理/逆地址编码 api使用具体方法请查看官方文档 文档网址:http://lbs.amap.com/api/webservice/guide/api/georegeo ...
- 高德地图API应用
高德地图官网:http://api.amap.com/javascript/ 输入关键字,搜索地址功能的网页: 1.引用远程Map Api(js)网址形式(注册后获取) 2.定义个<div> ...
- 【高德地图API】如何解决坐标转换,坐标偏移?
http://bbs.amap.com/thread-18617-1-1.html#rd?sukey=cbbc36a2500a2e6c2b0b19115118ace519002ff3a52731f13 ...
随机推荐
- 纯 Swift 封装的 SQLite 框架:SQLite.swift
SQLite.swift 是一个使用纯 Swift 语言封装 SQLite3 的操作框架. 特性: 简单的查询和参数绑定接口 安全.自动类型数据访问 隐式提交和回滚接口 开发者友好的错误处理和调试 文 ...
- android:GLSurfaceView绘制bitmap图片及glViewport调整的效果
首先看一下GLSurfaceView是怎样绘制的.正如android开发文档中描写叙述的那样,我们须要new一个GLSurfaceView对象,然后设置一个实现了Renderer接口的对象,我们须要写 ...
- Behavioral模式之Observer模式
1.意图 定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,全部依赖于它的对象都得到通知并被自己主动更新. 2.别名 依赖(dependents).公布-订阅(Publish-Subscr ...
- C++实现链表
最后几天留在Intel,没什么事情,都是开开会.趁着闲功夫,把数据结构复习一下,写了一个list.时间仓促,有些地方考虑的可能没那么到位,望高手们指点. #include <iostream&g ...
- 于XAML导入命名空间的代码
例如,下面的代码到指定的命名空间.不仅导入的命名空间,并且还为指定的命名空间前缀local.当然,你也可以指定一个前缀为另一个名称,这可以定义.导入后,市民可以在命名当前空间XAML使用代码.例如,在 ...
- 【web开发学习笔记】Structs2 Action学习笔记(两)
action学习笔记2-大约action method讨论 Action运行的时候并不一定要运行execute方法,能够在配置文件里配置Action的时候用method=来指定运行哪个方法 也能够在u ...
- 最受欢迎telnet
点击开关在模拟器,它相当于实PC经由控制线连接真实开关 由于我使用telnet远程登录到交换机的话.因为telnet工作在TCP/IP模型的应用层,现在让应用层通信的话,我首先要保证网络层通信,通信, ...
- 拆分字段优化SQL
拆分字段优化SQL 今天看到一条用函数处理连接的SQL,是群里某位网友的,SQL语句如下: SELECT SO_Order.fdate , SO_Order.fsn FROM so_order INN ...
- hive建表没使用LZO存储格式,可是数据是LZO格式时遇到的问题
今天微博大数据平台发邮件来说.他们有一个hql执行失败.可是从gateway上面的日志看不出来是什么原因导致的,我帮忙看了一下.最后找到了问题的解决办法,下面是分析过程: 1.执行失败的hql: IN ...
- mybatis型材xxxx.xml缺少后果返回类型
下面是一个mybatis型材xxxx.xml失踪resultMap错误: 严重: Servlet.service() for servlet [SpringMVC] in context with p ...