Taro

taro实战-微信小程序:地图Map

2019-07-15  本文已影响0人  逸笛

微信地图官方文档:https://developers.weixin.qq.com/miniprogram/dev/component/map.html

此次项目中功能点:
1.接口返回的当前位置
2.根据选择的时间段,绘制历史轨迹
3.清除历史轨迹

用到map中的知识点:
[图片上传中...(图片.png-4fc9c4-1563177278005-0)

 render() {
    let mapKey = "a382ef6a3c4a492b56f4844fe45249ff";

    let {
      longitude,
      latitude,
      showModal,
      dataChoice,
      checkRadio,
      beginTime,
      endTime,
      historyData,
      endX,
      endY,
      startX,
      startY,
      historyNote,
      address
    } = this.state;
    let { personname, cellphone, fixedtelephone } = StateStorage.userInfo;
    if (!address) {
      address = "无位置信息";
    } else {
      let curStr = address.slice(0, 9);
      let lastStr = address.slice(9);
      curStr += "\n";
      address = curStr.concat(lastStr);
    }
    let markers = [
      {
        iconPath: now,
        id: 1,
        anchor: { x: 0.5, y: 0.8 },
        latitude: latitude,
        longitude: longitude,
        width: 40,
        height: 40,
        callout: {
          alpha: 0.1,
          content:
            "姓名:" +
              personname +
              "\n" +
              "手环号:" +
              cellphone +
              " \n" +
              "联系电话:" +
              fixedtelephone +
              "\n" +
              "当前地点:" +
              address || "无位置信息",

          color: "#000000 ",
          fontSize: 18,
          bgColor: "#FFFFFF",
          display: "BYCLICK",
          padding: 10,
          textAlign: "left",
          boxShadow: "2px 2px 10px #aaa"
        }
      },
      {
        iconPath: start,
        id: 2,
        latitude: startY,
        longitude: startX,
        width: 30,
        height: 30
      },
      {
        iconPath: end,
        id: 3,
        latitude: endY,
        longitude: endX,
        width: 30,
        height: 30
      }
    ];
    let circles = [
      {
        latitude: latitude,
        longitude: longitude,
        radius: 60,
        fillColor: "#7cb5ec88",
        color: "#ffffff"
      }
    ];

    let polyline = [
      {
        points: historyData,
        width: 5,
        color: "#4CBBCE",
        dottedLine: false
      }
    ];
    if (historyNote == true) {
      markers = markers.splice(1, 2);
      circles = [];
    }

    return (
      <View className='container'>
        <View className='map-con'>
          <View className='map'>
            {showModal ? (
              <Map
                className='curMap'
                id='location'
                subkey={mapKey}
                longitude={markers[0].longitude}
                latitude={markers[0].latitude}
                scale='16'
                markers={markers}
                circles={circles}
                polyline={polyline}
                show-compass='true'
              >
                <CoverView class='controls'>
                  <CoverImage
                    class='img'
                    src={mapCheck}
                    onClick={this.noteCheck}
                  />
                </CoverView>
              </Map>
            ) : (
              undefined
            )}
          </View>
        </View>

        {showModal ? (
          undefined
        ) : (
          <View className='modal-main'>
            <View className='modal-bg' onClick={this.hideChoice} />
            <View className='map-note'>
              <View className='pay-back' onClick={this.noteCheck.bind(this, 0)}>
                <Image src={payBack} />
                <Text>轨迹回放</Text>
              </View>
              <View className='clear' onClick={this.noteCheck.bind(this, 1)}>
                <Image src={clear} />
                <Text>清除轨迹</Text>
              </View>
              <View className='location' onClick={this.noteCheck.bind(this, 2)}>
                <Image src={location} />
                <Text>当前位置</Text>
              </View>
            </View>
          </View>
        )}
        {dataChoice ? (
          undefined
        ) : (
          <View className='modal-date'>
            <View className='modal-bg' onClick={this.hideChoice} />
            <View className='date-con'>
              <View className='title'>轨迹回放</View>
              <RadioGroup onChange={this.radioChange}>
                <View className='date'>
                  <Text>今天</Text>
                  <Radio value='今天' checked={checkRadio} />
                </View>
                <View className='date'>
                  <Text>昨天</Text>
                  <Radio value='昨天' checked={!checkRadio} />
                </View>
              </RadioGroup>
              <Picker mode='date' onChange={this.onDateChange}>
                <View className='date'>
                  <Text>开始时间</Text>
                  <Text>{beginTime}</Text>
                </View>
                <View className='date'>
                  <Text>结束时间</Text>
                  <Text>{endTime}</Text>
                </View>
              </Picker>

              <Text className='submit-date' onClick={this.handlePayBack}>
                确认
              </Text>
            </View>
          </View>
        )}
      </View>
    );
  }
上一篇下一篇

猜你喜欢

热点阅读