先上效果图,有兴趣再往下看。
1是主页面,点一下,进入2,可以看到地图底图上有墓地分布的点位,划拉划拉放大缩小,把缅甸那块放大了,可以看到墓地点位,随便点一个点位,浮出墓地名称“西保火车站墓地”,点国殇墓园那个五角星的符号,跳转到页面4,国殇墓园的介绍。各自的墓地点位对应着各自的介绍页面。大致流程就是这样的。

内容不说,咱只讲技术,后文会附上源码,如果有兴趣,可以根据这个教程,套上别的内容,做一些其他的小程序,例如昆明市中学分布简介、某地周边美食盘点……
我们先把这个实例根据要实现的功能分解一下,这样一条条讲述,会清晰一些。


A、新建小程序:包括小程序的结构,新建页面。。
B、页面设计:在页面上设置字体,插入图片,修改导航栏内容等。
C、页面跳转的实现。
D、地图调用:把地图加载入页面,设置地图显示级别,在地图上标点位,设置点位的标注、标注显示与否,点击点位跳转页面。


写得详细一些。
A、新建小程序:
再好的教程也比不上官方的好。
https://mp.weixin.qq.com/debug/wxadoc/dev/
这篇微信小程序官方教程讲的是申请账号、安装开发者工具、自动生成一个获取用户信息的小程序。
这些不赘述了,讲几点注意事项。
1.微信开发者工具打开之后,如果是新建项目,那么一定要先建立一个空的文件夹,项目名称是文件夹的名称,选择建立普通快速启动模板
如图所示
要打开现有项目的话,项目目录一定要对,一般是有app文件的目录下。
快速启动模板的结构不看了,把远征军墓地程序结构看一下。

看1中,icon.png、wujiaoxing.png、忠魂归国.jpg、蓝姆迦.jpg这些图片都放在了images目录下,这个目录是一级目录,跟pages是同级的,图片这么放,是为了避免图标不显示的问题,这个问题在这篇博文中已经说过了,就不赘述了。
http://blog.csdn.net/sinat_41310868/article/details/78896324
加一点之前没说过的,小程序中的目录,就是系统里的文件夹,可以直接在远征军墓地分布小程序的根目录下,新建一个images文件夹,把图片拷贝进去就行。
如图所示:

所以说小程序还是挺人性化、便捷化的。
接着看2,我把所有墓地对应的网页都放在了hmtl目录下了,一共有20个,建立这些网页可以用新建目录——新建page的方法,也可以用一个更简单的方法。
我们看3,app.json这个文件是小程序的全局变量,小程序中所有的page都存在了这里。

{"pages": ["pages/index/index","pages/logs/logs","map/map/map","hmtl/1/1","hmtl/2/2","hmtl/3/3","hmtl/4/4","hmtl/5/5","hmtl/7/7","hmtl/8/8","hmtl/9/9","hmtl/10/10","hmtl/11/11","hmtl/12/12","hmtl/13/13","hmtl/14/14","hmtl/15/15","hmtl/16/16","hmtl/17/17","hmtl/18/18","hmtl/19/19","hmtl/20/20","hmtl/0/0"],"window": {"backgroundTextStyle": "light","navigationBarBackgroundColor": "#fff","navigationBarTitleText": "中国远征军墓地分布图","navigationBarTextStyle": "black"}
}

这个页面的数据格式是json的,我们可以 “pages”: 这个列表里面直接敲入路径,例如”hmtl/1/1”,hmlt这个目录下就出现了1这个目录,而1下面就有了1这个page。
当然如果用新建目录——新建page的方法添加page,app.json的代码也会变化。
神奇吧,这样的话,添加页面就方便多了。
不过要注意,不要敲错字,顺着列表来,添加,不要随便插入,这个试验几遍就可以掌握了。
删东西也可以在文件夹里删,不用在程序界面,这样反而不容易出错,这是经验之谈。


B、页面设计
先说一下全局性的东西。
app.js没动。
app.json代码如上,除了那几个page外,改了一个属性,就是”navigationBarTitleText”: “中国远征军墓地分布图”。把全局的导航条的名头改成了中国远征军墓地分布图。
app.wxss没动。
project.config.json没动。
pages里的index是初始页面,这里面三个文件都有改动。
index.wxml:这个文件就像网页设计中的HTML,把网页的框架样式搭建出来了。

<!--index.wxml-->
<view bindtap="gonext"><view class="copyright">二战后期,国民政府组建远征军两度入缅作战,打通滇缅公路。</view><view class="copyright">这两次入缅作战极为悲壮,为了挽救祖国于危亡,近十万将士客死他乡。</view><view class="copyright">远征军将士牺牲后,大多都就地安葬,这些墓地多分布在印度兰姆迦、玛格丽塔、缅甸新平洋、密支那等地。</view><view class="copyright">本程序以地图的方式将那些墓地和那段历史呈现出来。</view><view class="copyright">谨以此,纪念那些将最宝贵的生命贡献于漫漫历史长河的人们。</view>
</view>
<view class="copyright_item">本程序资料大多数来源于滇缅抗战史学者戈书亚著述</view>

其中bindtap=”gonext”,是点击页面的时候,调用gonext函数。class是类,同类具有同种属性。
index.wxss:这个就有点像css了,样式。

/**index.wxss**/
.copyright{color: darkblue;padding: 10px;margin-top: 10px;margin-right: 10px;margin-left: 10px;text-align: center;font-size:20px;}
.copyright_item{color: black;padding: 10px;margin-top: 10px;margin-right: 10px;margin-left: 180px;margin-top: 40px;text-align: left;
}

这个没什么可说的,颜色、字体、对齐等等,规定了就按规定走,不规定就是默认的。
index.js:

Page({data: {// text:"这是一个页面"},gonext: function () {wx.navigateTo({ url: "/map/map/map" });}})

程序是标准的,模板都是固定的,可以看到小程序的js文件就跟网页设计中的JavaScript差不多,动作。这几行代码很简单,Page{(data:{})}是固定的模式。
里面定义了一个函数,就是wxml中bindtap的值gonext。
wx.navigateTo({url:});是微信小程序内置的函数,跳转小程序内部的网页。
index启动页没啥东西,就是点击跳转map页面。
在进入地图调用之前,再看一个页面,国殇墓园那页。就是”hmtl/0/0”这页。
这个page一共4个文件,js、json、wxml、wxss。
其中0.js没动。
0.json:

{"backgroundTextStyle": "light","navigationBarBackgroundColor": "#000","navigationBarTitleText": "国殇墓园","navigationBarTextStyle": "#fff"
}

app.json中对全局进行了设置,如果单个页面不改的话,就是默认了全局设置,要改的话,就在单个页面的json中修改,这个0.json把这个页面的导航条颜色改成了黑色(#000),导航条文字改成了国殇墓园,文字颜色改成了白色(#fff)。
0.wxml:

<!--hmtl/0/0.wxml-->
<view><image mode="aspectFit" src="/images/忠魂归国.jpg"></image>
</view>
<text>国殇墓园位于中华人民共和国云南省保山市腾冲县城西南1公里处的叠水河畔、来凤山北麓,是为纪念抗日战争时期中国远征军第二十集团军攻克腾冲战斗中阵亡将士而建的墓园,是目前中国规模最大、保存也最完整的抗战时期正面战场阵亡将士纪念陵园。
“忠魂归国”行动发起于2011年,当年,19位孤旅异邦的中国远征军将士遗骸归葬此地,2014年中国远征军在八莫、南坎两处墓地的部分遗骸经火化后装入22个骨灰罐,腊戌、芒友的两处墓地的圹兆土分别装入2个骨灰罐,总共24个骨灰罐,归葬此地。</text>

主要看一下image,aspectFit是保持纵横比缩放图片。
src指向路径。
更多的可以参考官方文档。
https://mp.weixin.qq.com/debug/wxadoc/dev/component/image.html
0.wxss没动。因为也没有定义class。
接下来进入重头戏。


C、页面跳转,上文已经说了,程序内的页面跳转通过wx.navigateTo功能实现。

D、地图调用:把地图加载入页面,设置地图显示级别,在地图上标点位,设置点位的标注、标注显示与否,点击点位跳转页面。
map/map这个目录下有4个文件,其中map.json和map.wxss都没有动。
map.wxml:

<!--map/map/map.wxml-->
<map id="map" longitude="105.996094" latitude="35.029996" scale="3"  markers="{{markers}}" bindmarkertap="markertap" bindregionchange="regionchange"  style="width: 100%; height: 100vh;"></map>

同样可以参考这篇博文。
http://blog.csdn.net/sinat_41310868/article/details/78896324
说几个没有的。
1获取坐标值,用坐标拾取器就行,百度、高德都有,腾讯的是这个
http://lbs.qq.com/tool/getpoint/
2腾讯地图内容不多,没有境外的要素,中国国界以外都是白的。因为我要用缅甸的地图,白的可不好,所以我就去调用了百度地图,遗憾的发现,调用在小程序中的百度地图境外也是白的!
这可不太好。
不过,虽然目的没有达成,但还是get了调用百度地图的技能。
如何在小程序中调用百度地图,可以参考百度官方教程。
http://lbsyun.baidu.com/index.php?title=wxjsapi
如何获取百度地图AK,这篇博文里有讲到。
http://blog.csdn.net/sinat_41310868/article/details/78746094

map.js:

// map/map/map.js
Page({/*** 页面的初始数据*/data: {markers: [{iconPath: "/images/wujiaoxing.png",id: 0,latitude: 25.026093,longitude: 98.481338,width: 25,height: 25,callout: {content: "国殇墓园",fontSize: 20,display: "ALWAYS"}},{iconPath: "/images/icon.png",id: 1,latitude: 23.600166,longitude: 85.483411,width: 15,height: 15,callout: {content: "中国驻印军蓝姆迦公墓",fontSize: 15,display: "BYCLICK"}},{iconPath: "/images/icon.png",id: 2,latitude: 27.266935,longitude: 95.650210,width: 15,height: 15,callout: {content: "玛格丽塔中国军人墓地",fontSize: 15,display: "BYCLICK"}},},markertap: function (e) {if(e.markerId==0){wx.navigateTo({ url: "/hmtl/0/0" })}else if(e.markerId == 1) {wx.navigateTo({ url: "/hmtl/1/1" })}else if (e.markerId == 2) {wx.navigateTo({ url: "/hmtl/2/2" })}},/*** 生命周期函数--监听页面加载*/onLoad: function (options) {},/*** 生命周期函数--监听页面初次渲染完成*/onReady: function () {},/*** 生命周期函数--监听页面显示*/onShow: function () {},/*** 生命周期函数--监听页面隐藏*/onHide: function () {},/*** 生命周期函数--监听页面卸载*/onUnload: function () {},/*** 页面相关事件处理函数--监听用户下拉动作*/onPullDownRefresh: function () {},/*** 页面上拉触底事件的处理函数*/onReachBottom: function () {},/*** 用户点击右上角分享*/onShareAppMessage: function () {}
})

这段代码主要就是两个部分,1是把坐标点展到地图上,2是实现点击坐标点的时候跳转对应页面。
这是一个点,也就是一个marker的代码,iconPath是图标的路径,该点id,纬度、经度、图标高度、图标宽度。
callout和label都是点位的标注,看喜欢哪个就用哪个吧。用法差不多。
content名称是国殇墓园,fontSize字大小,dispaly显示:BYCLICK是点击的时候显示,ALWAYS是一直显示。
{
iconPath: “/images/wujiaoxing.png”,
id: 0,
latitude: 25.026093,
longitude: 98.481338,
width: 25,
height: 25,
callout: {
content: “国殇墓园”,
fontSize: 20,
display: “ALWAYS”
}
}

程序稍微改了改,中国驻印军蓝姆迦公墓是callout,国殇墓园是label。有点不一样,感觉还是callout更好看些。
markertap函数,点击点位跳转网页。
能注意到,小程序中,值用{{}},函数用”“引用。
在markers[]中,给每个marker赋了id,id的用处在这个函数中体现出来了。
id与点位唯一对应。
function(e),当前对象就是e呗,就是点击的那个点位,e.markerId就是点位的id。如果id==0,就跳转/hmtl/0/0这个页面。
if else if else if。

markertap: function (e) {
if(e.markerId==0){
wx.navigateTo({ url: “/hmtl/0/0” })
}
else if(e.markerId == 1) {
wx.navigateTo({ url: “/hmtl/1/1” })
}
else if (e.markerId == 2) {
wx.navigateTo({ url: “/hmtl/2/2” })
}
},

好了。整个程序都说完了,代码也都在行文中提供了。
这是一个很简单的小程序,也算是我第一个搭建出来的小程序吧!
说实话,我是一个技术控,但不是一个程序员,地图与地理信息相关的东西,我都尝试过,单说编程语言,VB、JAVA、C+、python等都用过,不过都是入门水平,而且在同一时间段里,这些语言是混用的,这会导致人特别恍惚,看着一段代码var和val不分,就像软件用太多了一样,我也很少用快捷键。
单从我有限的经历来说,微信小程序是比较好学,也比较好入门的东西,不过前提是,还是需要有一些编程基础的。
有一个想法,要付诸实现,不能只想,一定要做,一定要写出来。
现在小程序很火,网上资料很多,淘宝上也有卖源码的,尤其是腾讯是中国的,我们很少能看到官方教程是中文的吧?这一点,几乎让我热泪盈眶。
现在的程序入门,越来越趋向于简单化,只要能耐得下心,做出一个小东西,肯定是不难的。
但是任何领域,任何工作,要是想往高精尖上发展,还是任重道远的。
稍微分享一下我学习小程序的经过吧。
因为我真的不是程序员,所以我的编程基础很一般。

详解微信小程序地图组件实例:远征军墓地分布图小程序相关推荐

  1. php小程序onload,微信小程序 loading 组件实例详解

    这篇文章主要介绍了微信小程序 loading 组件实例详解的相关资料,需要的朋友可以参考下 loading通常使用在请求网络数据时的一种方式,通过hidden属性设置显示与否 主要属性: wxml 显 ...

  2. 详解微信小程序开发(项目从零开始)

    关注公众号 风色年代(itfantasycc) 280G前端&小程序资料随便拿! 详解微信小程序开发(项目从零开始) 一.序 微信小程序,估计大家都不陌生,现在应用场景特别多.今天就系统的介绍 ...

  3. 详解微信小程序页面间传递信息的三种方式

    详解微信小程序页面间传递信息的三种方式 在开发微信小程序的时候,经常会遇到在页面间传递信息的情况,有三种方法可以实现. 1. 使用数据缓存 将要存储的数据使用以下方法放入缓存 wx.setStorag ...

  4. 详解微信开放平台第三方平台代小程序开发业务基本接口调用逻辑

    详解微信第三方小程序代开发 微信申请第三方之后可以获取授权方的很多权限,主要的是生码和待开发,生码的第三方授权之前已经写了一篇文章,最近做了小程序待开发,总结一下写下来供大家参考 由百牛信息技术bai ...

  5. 微信小程序地图组件和相机组件实现基于location的AR效果的尝试(失败)

    微信小程序地图组件和相机组件实现基于location的AR效果的尝试(失败) 最近无论AR还是微信小程序都是炒的火热.微信小程序的特点便是"无需安装,用完即走",而我们所说的AR用 ...

  6. 用python画圆角矩形_详解微信小程序canvas圆角矩形的绘制的方法

    详解微信小程序canvas圆角矩形的绘制的方法 发布时间:2020-10-04 18:20:31 来源:脚本之家 阅读:103 作者:清夜 微信小程序允许对普通元素通过 border-radius 的 ...

  7. android常用技术网站收藏过的网址 给 Android 开发者的 RxJava 详解 Android设备标识-没有完美的解决方案-只有取舍 - 小彼得的专栏 - 博客频道 - CSDN.NET

    收藏过的网址 http://www.jianshu.com/p/a7b36d682b6f?ref=myread  Android插件化快速入门与实例解析 http://www.cnblogs.com/ ...

  8. Android高效率编码-第三方SDK详解系列(一)——百度地图,绘制,覆盖物,导航,定位,细腻分解!...

    Android高效率编码-第三方SDK详解系列(一)--百度地图,绘制,覆盖物,导航,定位,细腻分解! 这是一个系列,但是我也不确定具体会更新多少期,最近很忙,主要还是效率的问题,所以一些有效的东西还 ...

  9. Android高效率编码-第三方SDK详解系列(一)——百度地图,绘制,覆盖物,导航,定位,细腻分解!

    Android高效率编码-第三方SDK详解系列(一)--百度地图,绘制,覆盖物,导航,定位,细腻分解! 这是一个系列,但是我也不确定具体会更新多少期,最近很忙,主要还是效率的问题,所以一些有效的东西还 ...

最新文章

  1. linux命令行tcp连接,linux下2个检查tcp连接的命令
  2. thinkphp去掉index.php
  3. html中英文混排,EndNote中英文混排时et al和等的3种解决方法 | 科研动力
  4. Mybatis通过colliection属性递归获取菜单树
  5. 冒泡法排序c语言函数模板,使用模板技术的冒泡排序
  6. SpringMVC  注解式传递Ztree参数
  7. python 验证码_4行Python代码生成图像验证码
  8. 关于Spring AOP,除了动态代理、CGLIB,你还知道什么?
  9. 一文看懂网络上采样层中的 align_corners
  10. 自定义控件三部曲之动画篇(一)——alpha、scale、translate、rotate、set的xml属性及用法
  11. Smartisan OS ROM 小米手机 2/2S 标准版 刷机教程
  12. silverlight项目工作小结
  13. 雷林鹏分享:MySQL 元数据
  14. 真正的云主机到底是什么样的?转发
  15. Excel高级应用专题-数组公式
  16. VGS--网络三维互动软件技术
  17. 中国软件行进销存管理系统 免费
  18. html中if函数的使用方法,if函数的使用方法 if函数怎么使用
  19. 可能是最全的|适合决策AI研究的自动驾驶模拟器评测(下篇)
  20. 【免费】无人机图像处理工具软件—批量去雾,匀光匀色,增强,对比度亮度调节

热门文章

  1. 西电计算机应用达标,西电17春《计算机应用基础(二)》在线作业答案满分
  2. 基于android的手机安全卫士的实现心得二
  3. 网站架构和servlet架构
  4. 【python爬虫】爬取淘宝网商品信息
  5. 数字资产存在万圣节效应吗?
  6. 安全审计系统需求分析
  7. 解决Guacamole VNC剪切板乱码
  8. (Java篇)爬取微信公众号文章并保存为 PDF 格式
  9. Attempt to recreate a file for type io.realm.RealmStringRealmProxyInterface
  10. web端开发规范开发规范_Web开发人员的规范工作