收藏
回答

人体图片器官图片,在小程序里面怎么像地图标记点那样放大缩小呢?

目前用的这个movable-view组件,但是顶层的点位无法像地图那样保持位置不变。想请问一下,如何实现随着放大后,点位依然保持不变的效果(点位如图一箭头标记位置)。

图片demo如下:

<template>
  <view class="tl-p-relative">
    <view class="uni-padding-wrap uni-common-mt">
      <movable-area scale-area>
        <movable-view direction="none" class="tl-bg" @scale="onScale" scale="true"  scale-min="1" scale-max="2" :scale-value="scale">
           <image :src="testImg" mode="widthFix"></image>

        </movable-view>
      </movable-area>
    </view>
    <image class="tl-point" :style="{'top':top + 'rpx','left': left + 'rpx'}" :src="pointImg"></image>
<!--    <image class="tl-point" :style="{'top':top1 + 'px','right': right1+ 'px'}" :src="pointImg"></image>-->
  </view>
</template>


<script>
export default {
  data() {
    return {
      //testImg: 'https://static.zhihu.com/liukanshan/images/comics/bg-89c9bdc3.jpg'
      testImg: 'https://file.genepre.com/test111/11.png',
      //testImg: '../../static/test.png',
      pointImg: 'https://file.genepre.com/test111/point.png',
      top: 400,
      left: 320,
    }
  },
  methods: {
    onScale(e){
      console.log(e.detail)
      let num = parseInt(e.detail.scale);
      console.log('e.detail.scale================',e.detail.scale)
      console.log('num================',num)


      this.top = 400 + e.detail.scale*e.detail.y + 400;
      this.left = 320 -  e.detail.scale*e.detail.x + 320;
      /*this.top =  400 * e.detail.scale;
      this.left = 400 * e.detail.scale;*/
      // if(num == 1){
      //   this.top = 400 * e.detail.scale;
      //   this.left = 320 * e.detail.scale;
      // }else if(num == 2){
      //   this.top = 400 * e.detail.scale;
      //   this.left = 320 * e.detail.scale;
      // }else if(num == 3){
      //   this.top = 400 * e.detail.scale;
      //   this.left = 320 * e.detail.scale;
      // }else {
      //   this.top = 400 * e.detail.scale;
      //   this.left = 320 * e.detail.scale;
      // }

    },
  }
}
</script>

<style>
movable-view {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  height:100%;
}
.tl-p-relative{
  width: 750rpx;
  height:750rpx;
  position: relative;
}

movable-area {
  height: 100%;
  width: 100%;
  position: relative;
  overflow: hidden;
}

movable-view image{
  width:100%;
}
.tl-bg{
  position: relative;
}
.tl-point{
  position: absolute;
  width: 28rpx;
  height: 28rpx;
}
</style>



回答关注问题邀请回答
收藏
登录 后发表内容