转载: Follow your heart(154)---5个实用的地理位置api

本文介绍了五种相对小众但功能强大的地理定位API,包括Geoloqi、InfoChimps Geo API Suite、SimpleGeo、Snapr和Stikki。这些API提供了从地理围栏到位置数据查询等多种功能,有助于开发者在其应用程序和服务中实现复杂的地理位置功能。
http://www.iteye.com/news/23408

偶然看到,觉得很好

如果你经常关注技术领域,你可能对一些大的地理位置(Geoloaction)服务已经很熟悉了,比如Google地图、Foursquare、Bing地图,甚至Twitter的地理位置服务,也知道他们的API运用。本文介绍的一些API并不为许多人所熟知,但是在开发一些需要实现定位功能的应用程序及服务时它们可能会相当有用。

1. Geoloqi


Geoloqi是一款基于GPS的完全可定制应用程序。它可以让你根据自己所处的地理位置设置备忘录、规则以及消息。Geoloqi由波特兰的Amber Case和Aaron Parecki合作开发,旨在提供多方面的地理位置服务。它围绕了这样一个理念——“地理围墙(geofence)”,即当你进入某一地理区域时,Geoloqi能够触发一些行为。例如,当你接近某个地理位置时,Geoloqi可帮助你收到一条关于所要做事情的短信提醒;查找到附近区域相关的维基百科条目;或者发送一条信息给好友让他们知道你在附近。

Geologi API于去年夏天推出,尽管还没有自己的iPhone或Android应用,但已受到很多企业的关注。该API可帮助在应用程序中实现非常复杂的地理位置功能。

2. InfoChimps Geo API Suite


InfoChimps工具包括了多套位置API,也可以称之为Geo API套件。InfoChimps Geo API使得开发者无需开发维护自己的地理信息系统,也无需使用不同的语法去查询不同第三方的数据源,只需要调用其API,就可以从不同的信息来源(比如,维基百科、Twitter),完成基于经纬度、地理名称、人口调查等等的查询。查询的结果可以直接可视化在地图上(Shema格式信息),并提供不同的缩放层次。

3. SimpleGeo


SimpleGeo则完全专注于其API,似乎欲在位置数据上与InfoChimps直接竞争。十月份Urban Airship收购了它——这是一家专门为移动领域的开发者提供开发工具的公司。

SimpleGeo拥有三套可为应用程序增添位置功能的API:SimpleGeo、SimpleGeo Context(可以就某一特定位置提供天气、人口或周遭环境数据)以及SimpleGEO Places(包含商业清单和景点的一个数据库)。同时它还提供了一个数据库,可用于自定义托管你的地图位置。

在SimpleGeo被收购后关于其所专注的业务似乎面临着一些非议,不过,Urban Airship公司的CEO Scott Kveto承诺,该公司将继续为开发者提供地理位置服务。然而,其产品和价格可能会有所变化(此前,根据SimpleGeo的声明,该公司所有的2千万个地点信息都可免费使用)。Urban Airship公司本月完成了它的新一轮融资,因此前景应该很好。

4. Snapr


Snapr是一个照片共享应用程序,你可以在地图上标出你的照片。Snapr的地图API让开发人员可以在其应用程序中添加带地理标记的照片分享功能。这应该是一个有趣的API,你可以与本文介绍的其他API一起使用。

5. Stikki


Stikki只想着把一件事情做好,那就是:为实际的位置增加虚拟的备忘录。举例说明,你可以给自己设一个到达某特定位置的私信提醒,或者分享一个该地方的公开故事。创始人Joshua Ellis在这篇博客中解释了他的想法。值得注意的是,Stikki完全由HTML5开发,不需要用到任何移动设备,甚至它还没有任何的原生应用。

为了更好的实现其想法,Stikki一开始便推出了它的API。与Snapr一样,可以和其他API一起结合使用。

关于Infrastructure App

这些API中有一个共同点就是,专注于为其他应用程序提供后端服务(Snapper和Stikki例外)。我们可以将这些应用称为Infrastructure(基础架构)App,不要与“架构即服务(IaaS)”混淆。Infrastructure App能够将应用的某些组件外包给云,它们与另两个趋势的发展不谋而合,它们分别是:API优先的公司(例如Klout)和“数据即服务(Daas)”。
帮我这个页面 增加一个 查看他的朋友圈的按钮 放在哪里好看? 现在底部是有 聊天 喜欢 按钮 <template> <view class="flex-col page"> <view class="flex-col self-start space-y-492"> <view class="flex-row justify-between"> <view class="flex flex-direction flex-wrap align-center justify-center benben-flex-layout firstHome_flex_1"> <view style="position: relative"> <swiper ref="benbenSwiperfd1_0" :current="bannerIndexfd1_0" @change="bannerIndexfd1_0 = $event.detail.current" class='flex position-relative firstHome_fd1_0' previous-margin="0rpx" next-margin="0rpx" :display-multiple-items="1" :interval="5000" :duration="500" :autoplay='true' :circular='true'> <swiper-item class='flex firstHome_fd1_0' v-for="(item, index) in bannerList" v-if="bannerList.length > 0"> <image class='firstHome_fd1_0_c1_c0' mode="aspectFill" :src='item' @tap.stop="multiImagePreview( item , bannerList )" ></image> </swiper-item> <swiper-item class='flex firstHome_fd1_0' v-if="bannerList.length == 0"> <image class='firstHome_fd1_0_c1_c0' mode="aspectFill" :src='info.f_head_img' @tap.stop="singleImagePreview(info.f_head_img)"></image> </swiper-item> </swiper> <view data-v-774fccd4="" class="flex-col justify-start items-center self-start text-wrapper" v-if="bannerList.length > 0"> <text data-v-774fccd4="" class="font_2 text_3"><span>{{bannerIndexfd1_0 + 1}} / {{bannerList.length}}</span></text> </view> </view> </view> <view class='flex flex-wrap align-center' @tap.stop="handleJumpDiy" data-type="back" data-url="1" style="position: fixed; top: -12px; left: 0px;padding: 15px;" :style="{top:StatusBarRpx+'rpx', }"> <text class='fu-iconfont2 top_fd0_0_c0_c0' @tap.stop="handleJumpDiy" data-type="back" data-url="1"></text> </view> <view class="self-end text_2" style="position:fixed;right: 0; font-size: 26px; top: 0; padding: 15px;font-size: 26px;color: #000;" @tap.stop="popupShow1692179452356=true" :style="{top:StatusBarRpx+'rpx', }" v-if="!is_my && isLogin">...</view> </view> </view> <view class="flex-col space-y-10"> <view class="flex-col section_2"> <view class="flex-row items-center space-x-8"> <text class="text_4">{{info.f_nickname}}</text> <view class="flex-row shrink-0 section_3 space-x-4" v-if="info.sex == 2"> <image class="shrink-0 image_5" :src="alipath+'/16994512298122140741.png'"/> <text class="text_5">{{info.age}}</text> </view> <view class="flex-row shrink-0 section_3 space-x-4" v-if="info.sex == 1" style="background: #6FD4F3;"> <image class="shrink-0 image_5" :src="alipath+'/16994512311687342470.png'"> <text class="text_5">{{info.age}}</text> </view> </view> <view class="flex-row group_2 space-x-10"> <image class="image_6" :src="alipath+'/16994517866089658540.png'" /> <text class="text-999" style="font-size: 12px;">{{info.address}} {{info.juli}}</text> </view> <view class="flex-row items-center group_3 space-x-10"> <image class="image_7" :src="alipath+'/16994517867562976861.png'" /> <text class="font_4">交友宣言</text> <image class="image_7" :src="alipath+'/16994517867562976861.png'" /> </view> <text class="self-start text_6">{{info.autograph || '这个人很懒...且很神秘'}}</text> </view> <view class="flex-col section_2"> <view class="flex-row items-center space-x-10"> <image class="image_7" :src="alipath+'/16994517867562976861.png'" /> <text class="font_4">个人信息</text> <image class="image_7" :src="alipath+'/16994517867562976861.png'" /> </view> <view class="flex-row justify-between group_4"> <view class="flex-row hang1"> <text class="font_3">年龄:</text> <text class="font_5">{{info.age > 0 ? info.age+'岁' : '未知'}}</text> </view> <view class="flex-row hang1"> <text class="font_3">身高:</text> <text class="font_5">{{info.f_height || '未知'}}</text> </view> </view> <view class="flex-row justify-between group_4"> <view class="flex-row hang1"> <text class="font_3">体重:</text> <text class="font_5">{{info.f_weight || '未知'}}</text> </view> <view class="flex-row hang1"> <text class="font_3">学历:</text> <text class="font_5">{{info.f_xueli || '未知'}}</text> </view> </view> <view class="flex-row justify-between group_4"> <view class="flex-row hang1"> <text class="font_3">情感:</text> <text class="font_5">{{info.f_qinggan || '未知'}}</text> </view> <view class="flex-row hang1"> <text class="font_3">职业:</text> <text class="font_5">{{info.f_zhiye || '未知'}}</text> </view> </view> </view> </view> <view class="flex-col section_4"> <view class="flex-col space-y-30"> <view class="flex-row items-center space-x-10"> <image class="image_7" :src="alipath+'/16994517867562976861.png'" /> <text class="font_4">个人标签</text> <image class="image_7" :src="alipath+'/16994517867562976861.png'" /> </view> <view class="flex-row " style="flex-wrap: wrap;"> <view class="flex-col justify-start items-center button" style="margin-right: 10px;" v-for="(item,index) in info.f_label_list"> <text class="font_2" >{{item}}</text> </view> </view> </view> <view class="" style="height: 100rpx;"> </view> <view class="flex-row equal-division" v-if="!is_my && info.is_follow == 0"> <view class="flex-row justify-center items-center equal-division-item section_5 space-x-16" @tap.stop="toChat(info)"> <image class="image_8" :src="alipath+'/16994517860206336861.png'" /> <text class="font_6">聊天</text> </view> <view class="flex-row justify-center items-center equal-division-item_2 section_6 space-x-12" @click="followDo"> <image class="image_9" :src="alipath+'/16994517862130527894.png'" /> <text class="font_6" v-if="info.is_follow == 0" >喜欢</text> </view> </view> <view class="flex-row equal-division" v-if="!is_my && info.is_follow == 1"> <view class="flex-row justify-center items-center equal-division-item section_5 space-x-16" @tap.stop="toChat(info)"> <image class="image_8" :src="alipath+'/16994517860206336861.png'" /> <text class="font_6">聊天</text> </view> <view class="flex-row justify-center items-center section_6 space-x-12" style=" width: 50px;height:50px;margin-left: 10px;" @click="followDo"> <image class="image_9" :src='STATIC_URL+"heart-break-fill.png"' style="margin-left: 4px; width: 26px; height: 25px; "/> <text class="font_6" ></text> </view> </view> </view> <benben-popup v-model="popupShow1692179452356" :mask="true" :mask-close-able="true" mode='bottom'> <view class="flex benben-flex-layout flex-wrap align-center"> <view class='flex flex-direction flex-wrap align-stretch reviewDetails_fd2_0'> <view class='flex flex-wrap align-center justify-around reviewDetails_fd2_0_c1'> <view class='flex flex-direction flex-wrap align-center reviewDetails_fd2_0_c1_c0' @tap.stop="handleJumpDiy" data-type="navigateTo" :data-url="`/pages/xtsz/feedBack/feedBack`"> <text class='reviewDetails_fd2_0_c1_c0_c1'>举报Ta</text> </view> <view class='flex flex-direction flex-wrap align-center' @tap.stop="lahei"> <text class='reviewDetails_fd2_0_c1_c0_c1'>拉黑Ta</text> </view> </view> <view class='flex flex-wrap align-center justify-center reviewDetails_fd2_0_c2'> <view class='flex flex-wrap align-center justify-center reviewDetails_fd2_0_c2_c0' @tap.stop="popupShow1692179452356=false"> <text class='reviewDetails_fd2_0_c2_c0_c0'>取消</text> </view> </view> </view> </view> </benben-popup> </view> </view> </template> <script> export default { data() { return { popupShow1692179452356:false, id:0, alipath:'https://huoxiaobang.oss-cn-wulanchabu.aliyuncs.com/appxcx', info:[], bannerList:[], bannerIndexfd1_0: 0, is_my:false, dingwei:'', }; }, computed: { isLogin() { return this.$store.state.token == '' ? false : true; } }, onLoad(option) { let { id } = option this.id = option.id if(!global.token){ // this.toLoginDiy() // return false }else{ if(this.id == global.userInfo.id){ this.is_my = true }else{ this.is_my = false } } this.getInfo() }, methods: { lahei(){ if(!global.token){ this.toLoginDiy() return false } var that = this this.$util.showModal({ title: '提示', content: '是否拉黑此用户?', confirmColor: '#E93323', // uni.showModal({ // title: "是否确定拉黑此用户?", success: function (res) { if (res.confirm) { that.$api.post(global.apiUrls.post656bf07e55fa2,{ user_id:that.id }) .then((res) => { that.$message.info(res.data.msg) if (res.statusCode == 200 && res.data.code == 1 && res.data.data.lahei == 1) { setTimeout(function(){ uni.navigateBack() },800) } that.popupShow1692179452356 = false }) } } }); }, toChat(item){ if(!global.token){ this.toLoginDiy() return false } var nameList = { id: item.id,//对方id name: item.f_nickname,//聊天窗口对方昵称 avatar: item.f_head_img }; uni.navigateTo({ url: '/pages/index/friend/privateChat'+'?to=' + JSON.stringify(nameList) }); // var islogin = uni.getStorageSync("myUsername"); // // 聊天没登录 // if (islogin == '') { // this.$message.info("遇到了点小差错哦~请稍后重试") // setTimeout(function(){ // uni.navigateBack() // },800) // return false // } // //聊天留存接口 // var nameList = { // myName: global.userInfo.hx_uniqid_id,//我的id // your: item.hx_uniqid_id,//对方环信id // nickname: item.f_nickname,//聊天窗口对方昵称 // avatar: item.f_head_img, //我的头像? tade // he_user_id : this.id, //用于点击详情主页 // my_user_id : global.userInfo.id //用于点击详情主页 // }; // uni.navigateTo({ // url:'/pages/chatroom/chatroom?username=' + JSON.stringify(nameList), // }); }, followDo(){ if(this.follow_flag){ return false } this.follow_flag = true this.$api.post(global.apiUrls.post5d7e38b5e7e31,{ user_id:this.id }) .then((res) => { this.$message.info(res.data.msg) if (res.statusCode == 200 && res.data.code == 1) { this.info.is_follow = !this.info.is_follow this.$forceUpdate() } else { } this.follow_flag = false }) }, getInfo(){ this.dingwei = uni.getStorageSync('myPosition') || '' console.log(this.dingwei); var lat = this.dingwei.latitude || '' var lng = this.dingwei.longitude || '' this.$api.post(global.apiUrls.post656578e8e6103,{ id:this.id, user_id:global.userInfo.id || 0, latitude:lat, longitude:lng }) .then((res) => { if (res.statusCode == 200 && res.data.code == 1) { this.info = res.data.data this.bannerList = res.data.data.f_images || [] } else { this.$message.info(res.data.msg) setTimeout(function(){ uni.navigateBack(-1) },800) } }) .catch((err) => { console.log("err: " + JSON.stringify(err)); }); } }, }; </script> <style scoped lang="css"> @import './common.css'; .reviewDetails_fd2_0_c2_c0_c0 { color: #666666; font-size: 15px; font-weight: 400; } .reviewDetails_fd2_0_c2_c0 { background:#ededed; border-radius: 44rpx 44rpx 44rpx 44rpx; width: 686rpx; height: 80rpx; margin: 24rpx 0rpx 24rpx 0rpx; line-height: 40px; } .reviewDetails_fd2_0_c2 { /* border-top: 1px solid #eee; */ } .reviewDetails_fd2_0_c1_c0_c1 { font-weight: 400; color: #333; line-height: 40px; font-size: 15px; } .reviewDetails_fd2_0_c1_c0_c0 { width: 80rpx; height: 80rpx; border-radius: 40rpx 40rpx 40rpx 40rpx; margin: 0rpx 0rpx 16rpx 0rpx; } .reviewDetails_fd2_0_c1_c0 { /* margin: 0rpx 57rpx 0rpx 0rpx; */ width: 100%; } .reviewDetails_fd2_0_c1 { /* border-bottom: 1px solid #eee; */ padding: 40rpx 0rpx 0rpx 0rpx; /* margin: 0rpx 46rpx 0rpx 46rpx; */ } .reviewDetails_fd2_0_c0_c2_c0 { width: 40rpx; height: 40rpx; border-radius: 0rpx 0rpx 0rpx 0rpx; } .reviewDetails_fd2_0_c0_c1_c0 { font-size: 32rpx; font-weight: 500; color: #333; margin: 0rpx 24rpx 0rpx 24rpx; } .reviewDetails_fd2_0_c0_c1 { padding: 32rpx 0rpx 32rpx 0rpx; } .reviewDetails_fd2_0_c0_c0 { width: 40rpx; height: 40rpx; } .reviewDetails_fd2_0_c0 { padding: 0rpx 32rpx 0rpx 32rpx; } .reviewDetails_fd2_0 { background: #fff; padding: 0rpx 0rpx 0rpx 0rpx; background-size: 100% auto !important; border-radius: 28rpx 28rpx 0rpx 0rpx; width: 750rpx; } .firstHome_numberfd1_0_c0 { background: rgba(213, 213, 213, 0.41); position: absolute; bottom: 20rpx; right: 30rpx; width: 80rpx; height: 40rpx; border-radius: 6rpx 6rpx 6rpx 6rpx; font-size: 24rpx; color: #FFFFFF; line-height: 46rpx; font-weight: 400; } .firstHome_fd1_0_c1_c0 { width: 750rpx; height: 750rpx; /* border-radius: 24rpx 24rpx 24rpx 24rpx; */ } .firstHome_fd1_0 { width: 750rpx; height: 750rpx; /* border-radius: 24rpx 24rpx 24rpx 24rpx; */ overflow: hidden; } .firstHome_swiperDotUnselectedfd1_0 { border: 3px solid rgba(255, 255, 255, 0.6); background: #FFFFFF; width: 8rpx; height: 8rpx; border-radius: 10rpx 10rpx 10rpx 10rpx; margin: 0rpx 6rpx 0rpx 0rpx; font-size: 24rpx; color: #fff; opacity: 0.5; } .firstHome_swiperDotSelectedfd1_0 { border: 3px solid var(--benbenbdColor1); background: #FFFFFF; width: 28rpx; height: 8rpx; border-radius: 10rpx 10rpx 10rpx 10rpx; margin: 0rpx 6rpx 0rpx 0rpx; font-size: 24rpx; color: #fff; } ::v-deep .firstHome_swiperDotfd1_0 { position: absolute; bottom: 8rpx; left: 0rpx; right: 0rpx; } page{ } body{ height: 100vh; } uni-page-body{ background-color: #fff; } .page { background-color: #f9f9f9; width: 100%; overflow-y: auto; overflow-x: hidden; } .section { padding: 39rpx 20rpx 24rpx 35rpx; background-size: 100% 100%; background-repeat: no-repeat; background-color: #ffffff; width: 755rpx; } .space-y-492 > view:not(:first-child), .space-y-492 > text:not(:first-child), .space-y-492 > image:not(:first-child) { margin-top: 492rpx; } .space-y-41 > view:not(:first-child), .space-y-41 > text:not(:first-child), .space-y-41 > image:not(:first-child) { margin-top: 41rpx; } .image { width: 33rpx; height: 20rpx; } .image_2 { margin-left: 9rpx; width: 30rpx; height: 21rpx; } .font_1 { font-size: 26rpx; font-family: PingFang SC; line-height: 20rpx; font-weight: 700; color: #000000; } .text { margin-left: 26rpx; } .group { margin-right: 9rpx; } .image_3 { width: 54rpx; height: 23rpx; } .text_2 { /* margin-right: 7rpx; */ color: #ffffff; font-size: 40rpx; font-family: PingFang SC; font-weight: 500; line-height: 5rpx; } .image_4 { width: 127rpx; height: 127rpx; } .text-wrapper { /* margin-top: 77rpx; */ padding: 8rpx 0; background-color: #66666699; border-radius: 20rpx; min-width: 84rpx; height: 40rpx; position: absolute; bottom: 15px; right: 10px; } .font_2 { font-size: 24rpx; font-family: PingFang SC; line-height: 24rpx; font-weight: 500; color: #556866; } .text_3 { color: #ffffff; font-weight: unset; } .space-y-10 > view:not(:first-child), .space-y-10 > text:not(:first-child), .space-y-10 > image:not(:first-child) { margin-top: 10rpx; } .section_2 { padding: 30rpx; background-color: #ffffff; } .space-x-8 > view:not(:first-child), .space-x-8 > text:not(:first-child), .space-x-8 > image:not(:first-child) { margin-left: 8rpx; } .text_4 { color: #262626; font-size: 40rpx; font-family: PingFang SC; font-weight: 700; line-height: 38rpx; } .section_3 { padding: 4rpx 8rpx; background-color: #fa7eba; border-radius: 12rpx; height: 24rpx; } .space-x-4 > view:not(:first-child), .space-x-4 > text:not(:first-child), .space-x-4 > image:not(:first-child) { margin-left: 4rpx; } .image_5 { width: 16rpx; height: 16rpx; } .text_5 { color: #ffffff; font-size: 20rpx; font-family: PingFang SC; line-height: 16rpx; } .group_2 { margin-top: 26rpx; } .image_6 { width: 20rpx; height: 26rpx; } .hang1{ display: flex; width: 50%; } .font_3 { font-size: 26rpx; font-family: PingFang SC; line-height: 25rpx; color: #999999; width: 80rpx; display: block; } .group_3 { margin-top: 39rpx; } .space-x-10 > view:not(:first-child), .space-x-10 > text:not(:first-child), .space-x-10 > image:not(:first-child) { margin-left: 10rpx; } .image_7 { width: 10rpx; height: 10rpx; } .font_4 { font-size: 30rpx; font-family: PingFang SC; line-height: 28rpx; font-weight: 500; color: #333333; } .text_6 { margin-top: 29rpx; color: #999999; font-size: 28rpx; font-family: PingFang SC; line-height: 28rpx; } .group_4 { margin-top: 30rpx; } .font_5 { width: calc(100% - 80rpx); font-size: 26rpx; font-family: PingFang SC; line-height: 25rpx; color: #333333; } .group_5 { margin-right: 142rpx; } .space-x-49 > view:not(:first-child), .space-x-49 > text:not(:first-child), .space-x-49 > image:not(:first-child) { margin-left: 49rpx; } .text_7 { line-height: 21rpx; } .group_6 { margin-top: 19rpx; } .space-x-164 > view:not(:first-child), .space-x-164 > text:not(:first-child), .space-x-164 > image:not(:first-child) { margin-left: 164rpx; } .text_8 { line-height: 26rpx; } .group_7 { margin-top: 15rpx; } .group_8 { margin-right: 144rpx; } .space-x-48 > view:not(:first-child), .space-x-48 > text:not(:first-child), .space-x-48 > image:not(:first-child) { margin-left: 48rpx; } .section_4 { padding: 30rpx 30rpx 73rpx; background-color: #ffffff; } .space-y-30 > view:not(:first-child), .space-y-30 > text:not(:first-child), .space-y-30 > image:not(:first-child) { margin-top: 30rpx; } .button { background-color: #eaf4f3; border-radius: 23rpx; border-radius: 12px; padding: 0 7px; height: 25px; line-height: 25px; text-align: center; display: block;margin-bottom: 5px; } .button_2 { padding: 12rpx 0; background-color: #eaf4f3; border-radius: 23rpx; width: 110rpx; height: 46rpx; } .button_3 { padding: 12rpx 0; background-color: #eaf4f3; border-radius: 23rpx; width: 190rpx; height: 46rpx; } .equal-division { /* margin-right: 10rpx; */ margin-top: 46rpx; position: fixed;left:25rpx;bottom:10px;width:700rpx } .equal-division-item { flex: 1 1 330rpx; } .section_5 { padding: 30rpx 0; background-image: linear-gradient(-73deg, #6bf4e6 0%, #9cffd6 100%); border-radius: 50rpx; height: 100rpx; } .space-x-16 > view:not(:first-child), .space-x-16 > text:not(:first-child), .space-x-16 > image:not(:first-child) { margin-left: 16rpx; } .image_8 { width: 38rpx; height: 41rpx; } .font_6 { font-size: 36rpx; font-family: PingFang SC; line-height: 34rpx; font-weight: 500; color: #ffffff; } .equal-division-item_2 { flex: 1 1 330rpx; margin-left: 20rpx; } .section_6 { padding: 30rpx 0; background-image: linear-gradient(-41deg, #d460ff 0%, #ff99da 100%); border-radius: 50rpx; height: 100rpx; width: 100rpx; } .space-x-12 > view:not(:first-child), .space-x-12 > text:not(:first-child), .space-x-12 > image:not(:first-child) { margin-left: 12rpx; } .image_9 { width: 42rpx; height: 38rpx; } </style>
11-12
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值