许成详 6 år sedan
förälder
incheckning
f39e76f4e9
3 ändrade filer med 462 tillägg och 19 borttagningar
  1. 206
    17
      pages/map/testmap.js
  2. 56
    1
      pages/map/testmap.wxml
  3. 200
    1
      pages/map/testmap.wxss

+ 206
- 17
pages/map/testmap.js Visa fil

@@ -9,13 +9,193 @@ Page({
9 9
    */
10 10
   data: {
11 11
     height: 'auto',
12
-    markers: []
12
+    markers: [],
13
+    showLayer: true,
14
+    navList: [{
15
+      value: '交通',
16
+      id: '',
17
+      count: '20'
18
+    }, {
19
+      value: '教育',
20
+      id: '',
21
+      count: '20'
22
+    }, {
23
+      value: '医疗',
24
+      id: '',
25
+      count: '20'
26
+    }, {
27
+      value: '商业',
28
+      id: '',
29
+      count: '20'
30
+    }],
31
+    navIndex: 0,
32
+    list: [{
33
+      value: '示例数据名称',
34
+      id: '',
35
+      distance: '300'
36
+    }, {
37
+      value: '示例数据名称',
38
+      id: '',
39
+      distance: '300'
40
+    }, {
41
+      value: '示例数据名称',
42
+      id: '',
43
+      distance: '300'
44
+    }, {
45
+      value: '示例数据名称',
46
+      id: '',
47
+      distance: '300'
48
+    }, {
49
+      value: '示例数据名称',
50
+      id: '',
51
+      distance: '300'
52
+    }, {
53
+      value: '示例数据名称',
54
+      id: '',
55
+      distance: '300'
56
+    }, {
57
+      value: '示例数据名称',
58
+      id: '',
59
+      distance: '300'
60
+    }, {
61
+      value: '示例数据名称',
62
+      id: '',
63
+      distance: '300'
64
+    }, {
65
+      value: '示例数据名称',
66
+      id: '',
67
+      distance: '300'
68
+    }, {
69
+      value: '示例数据名称',
70
+      id: '',
71
+      distance: '300'
72
+    }, {
73
+      value: '示例数据名称',
74
+      id: '',
75
+      distance: '300'
76
+    }, {
77
+      value: '示例数据名称',
78
+      id: '',
79
+      distance: '300'
80
+    }, {
81
+      value: '示例数据名称',
82
+      id: '',
83
+      distance: '300'
84
+    }, {
85
+      value: '示例数据名称',
86
+      id: '',
87
+      distance: '300'
88
+    }, {
89
+      value: '示例数据名称',
90
+      id: '',
91
+      distance: '300'
92
+    }, {
93
+      value: '示例数据名称',
94
+      id: '',
95
+      distance: '300'
96
+    }, {
97
+      value: '示例数据名称',
98
+      id: '',
99
+      distance: '300'
100
+    }, {
101
+      value: '示例数据名称',
102
+      id: '',
103
+      distance: '300'
104
+    }, {
105
+      value: '示例数据名称',
106
+      id: '',
107
+      distance: '300'
108
+    }, {
109
+      value: '示例数据名称',
110
+      id: '',
111
+      distance: '300'
112
+    }, {
113
+      value: '示例数据名称',
114
+      id: '',
115
+      distance: '300'
116
+    }, {
117
+      value: '示例数据名称',
118
+      id: '',
119
+      distance: '300'
120
+    }, {
121
+      value: '示例数据名称',
122
+      id: '',
123
+      distance: '300'
124
+    }, {
125
+      value: '示例数据名称',
126
+      id: '',
127
+      distance: '300'
128
+    }, {
129
+      value: '示例数据名称',
130
+      id: '',
131
+      distance: '300'
132
+    }, {
133
+      value: '示例数据名称',
134
+      id: '',
135
+      distance: '300'
136
+    }, {
137
+      value: '示例数据名称',
138
+      id: '',
139
+      distance: '300'
140
+    }, {
141
+      value: '示例数据名称',
142
+      id: '',
143
+      distance: '300'
144
+    }, {
145
+      value: '示例数据名称',
146
+      id: '',
147
+      distance: '300'
148
+    }, {
149
+      value: '示例数据名称',
150
+      id: '',
151
+      distance: '300'
152
+    }, {
153
+      value: '示例数据名称',
154
+      id: '',
155
+      distance: '300'
156
+    }, {
157
+      value: '示例数据名称',
158
+      id: '',
159
+      distance: '300'
160
+    }, {
161
+      value: '示例数据名称',
162
+      id: '',
163
+      distance: '300'
164
+    }, {
165
+      value: '示例数据名称',
166
+      id: '',
167
+      distance: '300'
168
+    }, {
169
+      value: '示例数据名称',
170
+      id: '',
171
+      distance: '300'
172
+    }, {
173
+      value: '示例数据名称',
174
+      id: '',
175
+      distance: '300'
176
+    }, {
177
+      value: '示例数据名称',
178
+      id: '',
179
+      distance: '300'
180
+    }, {
181
+      value: '示例数据名称',
182
+      id: '',
183
+      distance: '300'
184
+    }, {
185
+      value: '示例数据名称',
186
+      id: '',
187
+      distance: '300'
188
+    }, {
189
+      value: '示例数据名称',
190
+      id: '',
191
+      distance: '300'
192
+    }]
13 193
   },
14 194
 
15 195
   /**
16 196
    * 生命周期函数--监听页面加载
17 197
    */
18
-  onLoad: function (options) {
198
+  onLoad: function(options) {
19 199
     qqmapsdk = new QQMapWX({
20 200
       key: 'KJCBZ-G2MKX-DB443-Z4CBR-7E6K2-GJF5D'
21 201
     });
@@ -25,7 +205,7 @@ Page({
25 205
 
26 206
     //调用wx.getSystemInfo接口,然后动态绑定组件高度
27 207
     wx.getSystemInfo({
28
-      success: function (res) {
208
+      success: function(res) {
29 209
         that.setData({
30 210
           height: res.windowHeight
31 211
         })
@@ -36,20 +216,19 @@ Page({
36 216
   /**
37 217
    * 生命周期函数--监听页面初次渲染完成
38 218
    */
39
-  onReady: function () {
40
-  },
219
+  onReady: function() {},
41 220
 
42 221
   /**
43 222
    * 生命周期函数--监听页面显示
44 223
    */
45
-  onShow: function () {
224
+  onShow: function() {
46 225
     const _this = this
47 226
     qqmapsdk.search({
48
-      keyword: '教育',  //搜索关键词
227
+      keyword: '教育', //搜索关键词
49 228
       page_size: 20,
50
-      location: '39.980014,116.313972',  //设置周边搜索中心点
229
+      location: '39.980014,116.313972', //设置周边搜索中心点
51 230
       filter: 'category=大学,中学,小学,幼儿园',
52
-      success: function (res) { //搜索成功后的回调
231
+      success: function(res) { //搜索成功后的回调
53 232
         console.log(res)
54 233
         var mks = []
55 234
         for (var i = 0; i < res.data.length; i++) {
@@ -58,7 +237,7 @@ Page({
58 237
             id: res.data[i].id,
59 238
             latitude: res.data[i].location.lat,
60 239
             longitude: res.data[i].location.lng,
61
-            iconPath: "/resources/my_marker.png", //图标路径
240
+            iconPath: "", //图标路径
62 241
             width: 20,
63 242
             height: 20
64 243
           })
@@ -67,10 +246,10 @@ Page({
67 246
           markers: mks
68 247
         })
69 248
       },
70
-      fail: function (res) {
249
+      fail: function(res) {
71 250
         console.log(res);
72 251
       },
73
-      complete: function (res) {
252
+      complete: function(res) {
74 253
         console.log(res);
75 254
       }
76 255
     });
@@ -79,35 +258,45 @@ Page({
79 258
   /**
80 259
    * 生命周期函数--监听页面隐藏
81 260
    */
82
-  onHide: function () {
261
+  onHide: function() {
83 262
 
84 263
   },
85 264
 
86 265
   /**
87 266
    * 生命周期函数--监听页面卸载
88 267
    */
89
-  onUnload: function () {
268
+  onUnload: function() {
90 269
 
91 270
   },
92 271
 
93 272
   /**
94 273
    * 页面相关事件处理函数--监听用户下拉动作
95 274
    */
96
-  onPullDownRefresh: function () {
275
+  onPullDownRefresh: function() {
97 276
 
98 277
   },
99 278
 
100 279
   /**
101 280
    * 页面上拉触底事件的处理函数
102 281
    */
103
-  onReachBottom: function () {
282
+  onReachBottom: function() {
104 283
 
105 284
   },
106 285
 
107 286
   /**
108 287
    * 用户点击右上角分享
109 288
    */
110
-  onShareAppMessage: function () {
289
+  onShareAppMessage: function() {
111 290
 
291
+  },
292
+  cutNav(e) {
293
+    this.setData({
294
+      navIndex: e.target.dataset.index
295
+    })
296
+  },
297
+  closeLayer(){
298
+    this.setData({
299
+      showLayer: false
300
+    })
112 301
   }
113 302
 })

+ 56
- 1
pages/map/testmap.wxml Visa fil

@@ -1 +1,56 @@
1
-<map id="map" markers="{{markers}}" longitude="116.313972" latitude="39.980014" scale="14" style="width: 100%; height: {{height}}px;"></map>
1
+<view class="container">
2
+  <view class="map">
3
+    <map bindtouchstart="closeLayer" id="map" markers="{{markers}}" longitude="116.313972" latitude="39.980014" scale="14" style="width: 100%; height: {{height}}px;"></map>
4
+  </view>
5
+  <cover-view class="layer flex-v {{showLayer ? 'active' : ''}}">
6
+    <cover-view class="nav">
7
+      <cover-view class="navItem">
8
+        <cover-view class="centerLabel">
9
+          <cover-image class="navImg" mode="widthFix" src="/assets/images/icon1.png"></cover-image>
10
+          <cover-view class="navText">首页</cover-view>
11
+        </cover-view>
12
+      </cover-view>
13
+      <cover-view class="navItem">
14
+        <cover-view class="centerLabel">
15
+          <cover-image class="navImg" mode="widthFix" src="/assets/images/icon1.png"></cover-image>
16
+          <cover-view class="navText">分享</cover-view>
17
+        </cover-view>
18
+      </cover-view>
19
+      <cover-view class="navItem">
20
+        <cover-view class="centerLabel">
21
+          <cover-image class="navImg" mode="widthFix" src="/assets/images/icon1.png"></cover-image>
22
+          <cover-view class="navText">南京</cover-view>
23
+        </cover-view>
24
+      </cover-view>
25
+    </cover-view>
26
+    <cover-view class="mainDetail flex-item">
27
+      <cover-view class="detail flex-v">
28
+        <cover-view class="top flex-h">
29
+          <cover-view class="flex-item">
30
+            <cover-view class="name">银城颐居悦见山</cover-view>
31
+            <cover-view class="remark">老山风景区</cover-view>
32
+            <cover-view class="remark">项目自带商业</cover-view>
33
+          </cover-view>
34
+          <cover-view class="btn">
35
+            <cover-view class="centerLabel">
36
+              <cover-image class="btnImg" mode="widthFix" src="/assets/images/icon1.png"></cover-image>
37
+              <cover-view class="text">导航</cover-view>
38
+            </cover-view>
39
+          </cover-view>
40
+        </cover-view>
41
+        <cover-view class="navList flex-h">
42
+          <cover-view wx:for="{{navList}}" wx:for-item="item" wx:for-index="index" wx:key="key" class="flex-item {{navIndex === index ? 'active' : ''}}" data-index="{{index}}" bindtap="cutNav">{{item.value}}({{item.count || 0}})</cover-view>
43
+        </cover-view>
44
+        <cover-view class="flex-item">
45
+          <cover-view class="list">
46
+            <cover-view class="listItem" wx:for="{{list}}" wx:for-item="item" wx:for-index="index" wx:key="key">
47
+              <cover-view class="line"></cover-view>
48
+              <cover-view class="icon"></cover-view>
49
+              <cover-view class="itemText">{{item.value}} 距您{{item.distance}}m</cover-view>
50
+            </cover-view>
51
+          </cover-view>
52
+        </cover-view>
53
+      </cover-view>
54
+    </cover-view>
55
+  </cover-view>
56
+</view>

+ 200
- 1
pages/map/testmap.wxss Visa fil

@@ -1 +1,200 @@
1
-/* pages/map/testmap.wxss */
1
+/* pages/map/testmap.wxss */
2
+
3
+.map {
4
+  width: 100%;
5
+  height: 100%;
6
+  position: relative;
7
+  overflow: hidden;
8
+  z-index: 1;
9
+}
10
+
11
+.layer {
12
+  width: 100%;
13
+  height: 75vh;
14
+  position: absolute;
15
+  overflow: hidden;
16
+  bottom: 0;
17
+  transform: translateY(calc(75vh - 58px));
18
+  -webkit-transform: translateY(calc(75vh - 58px));
19
+  left: 0;
20
+  z-index: 2;
21
+  transition: all .3s linear;
22
+  -webkit-transition: all .3s linear;
23
+}
24
+
25
+.layer.active {
26
+  transform: translateY(0);
27
+  -webkit-transform: translateY(0);
28
+}
29
+
30
+.layer .nav{
31
+  white-space: nowrap;
32
+  position: relative;
33
+  overflow: hidden;
34
+}
35
+
36
+.layer .navItem {
37
+  width: 48px;
38
+  height: 48px;
39
+  display: inline-block;
40
+  vertical-align: middle;
41
+  position: relative;
42
+  overflow: hidden;
43
+  background: #fff;
44
+  border-radius: 10px;
45
+  /* box-shadow: 0 0 10px 5rpx rgba(0, 0, 0, .08); */
46
+  margin-left: 10px;
47
+}
48
+
49
+.layer .nav .centerLabel {
50
+  text-align: center;
51
+  width: 100%;
52
+}
53
+
54
+.layer .navImg  {
55
+  max-width: 16px;
56
+  max-height: 16px;
57
+  display: inline-block;
58
+}
59
+
60
+.layer .navText {
61
+  line-height: 16px;
62
+  font-size: 12px;
63
+  color: #666;
64
+  width: 100%;
65
+  display: block;
66
+  margin-top: -5rpx;
67
+}
68
+
69
+.layer .mainDetail {
70
+  margin-top: 10px;
71
+  position: relative;
72
+  overflow: hidden;
73
+}
74
+
75
+.layer .detail {
76
+  width: 100%;
77
+  height: 100%;
78
+  position: relative;
79
+  overflow: hidden;
80
+  border-radius: 20px 20px 0 0;
81
+  background: #fff;
82
+  /* box-shadow: 0 0 10px 5px rgba(0, 0, 0, .08); */
83
+}
84
+
85
+.layer .detail .top {
86
+  padding: 0 20px;
87
+  position: relative;
88
+  overflow: hidden;
89
+  margin-top: 20px;
90
+  align-items: center;
91
+}
92
+
93
+.layer .detail .top .name {
94
+  font-size: 17px;
95
+  line-height: 30px;
96
+}
97
+
98
+.layer .detail .top .remark {
99
+  line-height: 17px;
100
+  font-size: 11px;
101
+  color: #666;
102
+}
103
+
104
+.layer .detail .top .btn {
105
+  width: 50px;
106
+  height: 50px;
107
+  position: relative;
108
+  overflow: hidden;
109
+  border-radius: 100%;
110
+  background: #bb9c79;
111
+  text-align: center;
112
+}
113
+
114
+.layer .detail .top .btn .centerLabel {
115
+  width: 100%;
116
+  overflow: hidden;
117
+}
118
+
119
+.layer .detail .btnImg {
120
+  width: 18px;
121
+  display: inline-block;
122
+}
123
+
124
+.layer .detail .top .btn .text {
125
+  width: 100%;
126
+  text-align: center;
127
+  color: #fff;
128
+  font-size: 13px;
129
+  line-height: 1.2;
130
+  margin-top: -8px;
131
+}
132
+
133
+.layer .navList {
134
+  border-top: 1px solid #eee;
135
+  border-bottom: 1px solid #eee;
136
+  margin-top: 15px;
137
+}
138
+
139
+.layer .navList .flex-item {
140
+  line-height: 22px;
141
+  font-size: 14px;
142
+  color: #333;
143
+  text-align: center;
144
+  padding: 12px 0;
145
+}
146
+
147
+.layer .navList .flex-item.active {
148
+  background: #bb9c79;
149
+  color: #fff;
150
+}
151
+
152
+.layer .detail .list {
153
+  width: 100%;
154
+  height: 100%;
155
+  position: relative;
156
+  overflow-y: scroll;
157
+  -webkit-overflow-scrolling: touch;
158
+}
159
+
160
+.layer .detail .list .listItem {
161
+  padding: 0 0 0 35px;
162
+  position: relative;
163
+  overflow: hidden;
164
+}
165
+
166
+.layer .detail .list .line {
167
+  width: 1px;
168
+  height: 100%;
169
+  position: absolute;
170
+  left: 17px;
171
+  background: #f3ede1;
172
+  top: 0;
173
+  z-index: 1;
174
+}
175
+
176
+.layer .detail .list .listItem .itemText {
177
+  width: 100%;
178
+  position: relative;
179
+  overflow: hidden;
180
+  white-space: nowrap;
181
+  border-bottom: 1px solid #eee;
182
+  line-height: 22px;
183
+  font-size: 14px;
184
+  color: #333;
185
+  padding: 10px 0;
186
+}
187
+
188
+.layer .detail .list .listItem .icon {
189
+  width: 5px;
190
+  height: 5px;
191
+  position: absolute;
192
+  border-radius: 100%;
193
+  background: #f0cd7b;
194
+  border: 1px solid #ad8453;
195
+  z-index: 2;
196
+  left: 14px;
197
+  top: 50%;
198
+  transform: translateY(-50%);
199
+  -webkit-transform: translateY(-50%);
200
+}