Android项目实战之百度地图地点签到功能

前言:先写个简单的地点签到功能,如果日后有时间细写的话,会更加好好研究一下百度地图api,做更多逻辑判断。

这里主要是调用百度地图中的场景定位中的签到场景。通过官方文档进行api集成。通过GPS的定位功能,获取地理位置,时间,用户名进行存储。之后通过日历显示历史签到记录。

效果图:

 /**百度地图sdk**/
 implementation files('libs/BaiduLBS_Android.jar')
 /**日历选择器**/
 implementation 'com.prolificinteractive:material-calendarview:1.4.3'

签到布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 xmlns:app="http://schemas.android.com/apk/res-auto"
 xmlns:tools="http://schemas.android.com/tools"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 android:background="@color/color_ffffff"
 android:orientation="vertical"
 tools:context=".activity.SignInActivity">

 <LinearLayout
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:layout_margin="20dp"
  android:orientation="vertical">

  <TextView
   android:id="@+id/sign_calendar"
   android:layout_width="match_parent"
   android:layout_height="wrap_content"
   android:textColor="@color/color_000000"
   android:textSize="18sp" />

  <TextView
   android:layout_width="match_parent"
   android:layout_height="wrap_content"
   android:text="@string/check_in_area" />

  <View style="@style/horizontal_line_style" />

  <LinearLayout
   android:id="@+id/line_sign_result"
   android:layout_width="match_parent"
   android:layout_height="wrap_content"
   android:layout_margin="5dp"
   android:orientation="horizontal"
   android:visibility="gone">

   <ImageView
    android:layout_width="40dp"
    android:layout_height="40dp"
    android:layout_margin="5dp"
    android:src="@mipmap/sign_in_address" />

   <LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical">

    <TextView
     android:id="@+id/sign_in_result"
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
     android:layout_margin="2dp"
     android:textColor="@color/color_000000"
     android:textSize="20sp" />

    <LinearLayout
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:orientation="horizontal">

     <TextView
      android:layout_width="match_parent"
      android:layout_height="wrap_content"
      android:layout_marginLeft="5dp"
      android:text="@string/sign_in_time" />

     <TextView
      android:id="@+id/sign_in_time"
      android:layout_width="match_parent"
      android:layout_height="wrap_content" />
    </LinearLayout>

    <TextView
     android:id="@+id/sign_address"
     android:layout_width="match_parent"
     android:layout_height="wrap_content" />

    <Button
     android:id="@+id/btn_sign_again"
     android:layout_width="120dp"
     android:layout_height="40dp"
     android:layout_centerHorizontal="true"
     android:layout_marginTop="10dp"
     android:background="@drawable/btn_round_border"
     android:text="@string/sign_again"
     android:textAllCaps="false"
     android:textColor="@color/colorPrimary"
     android:textSize="15sp" />

   </LinearLayout>

  </LinearLayout>

  <Button
   android:id="@+id/btn_sign_in"
   style="@style/style_button"
   android:layout_gravity="center_vertical|center_horizontal"
   android:layout_marginTop="50dp"
   android:background="@drawable/btn_negative_nomal"
   android:text="@string/signIn"
   android:visibility="gone" />

 </LinearLayout>

</LinearLayout>

SignInActivity.java

public class SignInActivity extends BaseActivity {
 @BindView(R.id.sign_calendar)
 TextView signCalender;
 @BindView(R.id.line_sign_result)
 LinearLayout lineSignResult;
 @BindView(R.id.sign_in_result)
 TextView signInResult;
 @BindView(R.id.sign_in_time)
 TextView signInTime;
 @BindView(R.id.sign_address)
 TextView signAddress;
 @BindView(R.id.btn_sign_in)
 Button btnSignIn;
 private LocationService mLocationService;
 private boolean isAgain = false;
 SignIn signIn = new SignIn();
 MyUser myUser = BmobUser.getCurrentUser(MyUser.class);
 @Override
 protected int contentViewID() {
  return R.layout.activity_sign_in;
 }

 @Override
 protected void initialize() {
  setTopTitle(getString(R.string.signIn), true);
  setLeftBtnFinish();
  setDate();
  setLocation();
  querySignInState();
 }

 /**
  * 查询今日签到状态
  */
 private void querySignInState() {
  BmobQuery<SignIn> signInBmobQuery = new BmobQuery<SignIn>();
  signInBmobQuery.addWhereEqualTo("username", myUser.getUsername());
  signInBmobQuery.addWhereEqualTo("date", FormatUtils.getDateTimeString(Calendar.getInstance().getTime(), FormatUtils.template_Date));
  signInBmobQuery.findObjects(new FindListener<SignIn>() {
   @Override
   public void done(List<SignIn> object, BmobException e) {
    if (e == null) {
     if (object.isEmpty()){
      isAgain = false;
      btnSignIn.setVisibility(View.VISIBLE);
     } else {
      isAgain = true;
      SignIn signIn = object.get(0);
      btnSignIn.setVisibility(View.GONE);
      lineSignResult.setVisibility(View.VISIBLE);
      signAddress.setText(signIn.getAddress());
      signInTime.setText(signIn.getTime());
      signInResult.setText(getString(R.string.sign_in_success));
     }
    } else {
     isAgain = false;
    }
   }
  });
 }

 private void setLocation() {
  // 初始化 LocationClient
  mLocationService = new LocationService(this);
  // 注册监听
  mLocationService.registerListener(mListener);
  LocationClientOption option = mLocationService.getOption();
  // 签到场景 只进行一次定位返回最接近真实位置的定位结果(定位速度可能会延迟1-3s)
  option.setLocationPurpose(LocationClientOption.BDLocationPurpose.SignIn);
  // 设置定位参数
  mLocationService.setLocationOption(option);
 }

 /*****
  *
  * 定位结果回调,重写onReceiveLocation方法
  *
  */
 private BDAbstractLocationListener mListener = new BDAbstractLocationListener() {

  /**
   * 定位请求回调函数
   *
   * @param location 定位结果
   */
  @Override
  public void onReceiveLocation(BDLocation location) {
   if (null != location && location.getLocType() != BDLocation.TypeServerError &&
     location.getLocType() != BDLocation.TypeOffLineLocationFail &&
     location.getLocType() != BDLocation.TypeCriteriaException) {

    String address = location.getAddrStr(); //获取详细地址信息
    if (!isAgain) {
     saveSignIn(address);
    } else {
     updateSignIn(address);
    }

   } else {
    signInResult.setText(getString(R.string.sign_in_failure));

   }
  }
 };

 private void setDate() {
  String dateString = FormatUtils.getDateTimeString(Calendar.getInstance().getTime(), FormatUtils.template_Date);
  String weekString = DateUtils.getDayOfWeek();
  String CalendarString = dateString + " " + weekString;
  signCalender.setText(CalendarString);
 }

 @OnClick({R.id.btn_sign_in, R.id.btn_sign_again})
 public void onClick(View view) {
  switch (view.getId()) {
   case R.id.btn_sign_in:
    signIn();
    break;
   case R.id.btn_sign_again:
    isAgain = true;
    signIn();
    break;
   default:
  }

 }

 /**
  * 更新签到数据
  * @param address
  */
 private void updateSignIn(String address) {
  Calendar calendar = Calendar.getInstance();
  SignIn newSignIn = new SignIn();
  newSignIn.setUsername(myUser.getUsername());
  newSignIn.setAddress(address);
  signIn.setDate(FormatUtils.getDateTimeString(calendar.getTime(), FormatUtils.template_Date));
  signIn.setTime(FormatUtils.getDateTimeString(calendar.getTime(), FormatUtils.template_Time));
  newSignIn.update(signIn.getObjectId(), new UpdateListener() {
   @Override
   public void done(BmobException e) {
    if (e == null) {
     signAddress.setText(address);
     signInTime.setText(FormatUtils.getDateTimeString(Calendar.getInstance().getTime(), FormatUtils.template_Time));
     signInResult.setText(getString(R.string.sign_in_success));
     ToastUtils.showShort(SignInActivity.this, getString(R.string.sign_in_success));
    } else {
     ToastUtils.showShort(SignInActivity.this, getString(R.string.sign_in_failure));
    }
   }
  });
 }

 /**
  * 保存签到数据
  * @param address
  */
 private void saveSignIn(String address) {
  Calendar calendar = Calendar.getInstance();
  signIn.setUsername(myUser.getUsername());
  signIn.setAddress(address);
  signIn.setDate(FormatUtils.getDateTimeString(calendar.getTime(), FormatUtils.template_Date));
  signIn.setTime(FormatUtils.getDateTimeString(calendar.getTime(), FormatUtils.template_Time));
  signIn.save(new SaveListener<String>() {
   @Override
   public void done(String s, BmobException e) {
    if (e == null) {
     btnSignIn.setVisibility(View.GONE);
     lineSignResult.setVisibility(View.VISIBLE);
     signAddress.setText(address);
     signInTime.setText(FormatUtils.getDateTimeString(Calendar.getInstance().getTime(), FormatUtils.template_Time));
     signInResult.setText(getString(R.string.sign_in_success));
     ToastUtils.showShort(SignInActivity.this, getString(R.string.sign_in_success));
    } else {
     ToastUtils.showShort(SignInActivity.this, getString(R.string.sign_in_failure));
    }
   }
  });

 }

 /**
  * 签到
  */
 private void signIn() {
  if (mLocationService.isStart()) {
   mLocationService.requestLocation();
   return;
  }
  //签到只需调用startLocation即可
  mLocationService.start();
 }

 @Override
 protected void onDestroy() {
  super.onDestroy();
  if (mLocationService != null) {
   mLocationService.unregisterListener(mListener);
   mLocationService.stop();
  }
 }
}

历史签到布局

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
 xmlns:app="http://schemas.android.com/apk/res-auto"
 xmlns:tools="http://schemas.android.com/tools"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 android:background="@color/color_ffffff"
 tools:context=".activity.MySignInActivity">
 <LinearLayout
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:layout_margin="10dp"
  android:orientation="vertical">

  <com.prolificinteractive.materialcalendarview.MaterialCalendarView
   android:id="@+id/materialCalendarView_sign_in"
   android:layout_width="match_parent"
   android:layout_height="300dp"
   android:background="@color/white"
   android:clipChildren="false"
   app:mcv_calendarMode="month"
   app:mcv_dateTextAppearance="@style/MaterialCalendarTextStyelNormal"
   app:mcv_firstDayOfWeek="sunday"
   app:mcv_selectionColor="#D203A9F4"
   app:mcv_showOtherDates="all"
   app:mcv_tileSize="match_parent"
   app:mcv_tileWidth="match_parent" />

  <View
   style="@style/horizontal_line_style"/>
  <LinearLayout
   android:id="@+id/line_my_sign_in"
   android:layout_width="match_parent"
   android:layout_height="wrap_content"
   android:layout_margin="15dp"
   android:visibility="gone"
   android:orientation="horizontal">
   <ImageView
    android:layout_width="40dp"
    android:layout_height="40dp"
    android:layout_margin="5dp"
    android:src="@mipmap/sign_in_address" />

   <LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical">
    <LinearLayout
     android:layout_width="match_parent"
     android:layout_height="wrap_content">
     <TextView
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:textColor="@color/color_000000"
      android:textSize="18sp"
      android:text="@string/sign_in_time"/>
     <TextView
      android:id="@+id/my_sign_in_date"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:textColor="@color/color_000000"
      android:textSize="18sp"
      android:layout_marginLeft="5dp"/>
     <TextView
      android:id="@+id/my_sign_in_time"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:textColor="@color/color_000000"
      android:textSize="18sp"
      android:layout_marginLeft="5dp"/>
    </LinearLayout>

    <TextView
     android:id="@+id/my_sign_in_address"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:layout_marginLeft="5dp"/>
   </LinearLayout>
  </LinearLayout>

 </LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>

MySignInActivity.java

public class MySignInActivity extends BaseActivity implements OnDateSelectedListener {
 @BindView(R.id.my_sign_in_date)
 TextView mySignInDate;
 @BindView(R.id.my_sign_in_time)
 TextView mySignInTime;
 @BindView(R.id.my_sign_in_address)
 TextView mySignInAddress;
 @BindView(R.id.line_my_sign_in)
 LinearLayout lineMySignIn;
 @BindView(R.id.materialCalendarView_sign_in)
 MaterialCalendarView widget;
 MyUser myUser = BmobUser.getCurrentUser(MyUser.class);
 private List<CalendarDay> calendarDays = new ArrayList<>();

 @Override
 protected int contentViewID() {
  return R.layout.activity_my_sign_in;
 }

 @Override
 protected void initialize() {
  setTopTitle(getString(R.string.my_sign_in), true);
  setLeftBtnFinish();
  widget.setSelectedDate(CalendarDay.today());
  widget.state().edit().setMaximumDate(CalendarDay.today()).commit();
  widget.setOnDateChangedListener(this);
  initDate();
  querySignInState(Calendar.getInstance());

 }

 private void initDate() {
  BmobQuery<SignIn> signInBmobQuery = new BmobQuery<SignIn>();
  signInBmobQuery.addWhereEqualTo("username", myUser.getUsername());
  signInBmobQuery.findObjects(new FindListener<SignIn>() {
   @Override
   public void done(List<SignIn> object, BmobException e) {
    if (e == null) {
     if (!object.isEmpty()) {
      for (SignIn signIn : object) {
       Date date = DateUtils.strToDate(signIn.getDate() + " " + signIn.getTime());
       calendarDays.add(CalendarDay.from(date));
      }
      widget.addDecorator(new EventDecorator(ContextCompat.getColor(MySignInActivity.this, R.color.color_1396aa), calendarDays));
     }
    } else {
     LogUtils.e(e.getMessage());
     ToastUtils.showShort(MySignInActivity.this, getString(R.string.query_failure));
    }
   }
  });
 }

 @Override
 public void onDateSelected(@NonNull MaterialCalendarView widget, @NonNull CalendarDay date, boolean selected) {
  querySignInState(date.getCalendar());
 }

 private void querySignInState(Calendar calendar) {
  BmobQuery<SignIn> signInBmobQuery = new BmobQuery<SignIn>();
  signInBmobQuery.addWhereEqualTo("username", myUser.getUsername());
  signInBmobQuery.addWhereEqualTo("date", FormatUtils.getDateTimeString(calendar.getTime(), FormatUtils.template_Date));
  signInBmobQuery.findObjects(new FindListener<SignIn>() {
   @Override
   public void done(List<SignIn> object, BmobException e) {
    if (e == null) {
     if (!object.isEmpty()) {
      lineMySignIn.setVisibility(View.VISIBLE);
      SignIn signIn = object.get(0);
      mySignInDate.setText(signIn.getDate());
      mySignInTime.setText(signIn.getTime());
      mySignInAddress.setText(signIn.getAddress());
     } else {
      lineMySignIn.setVisibility(View.GONE);
     }
    } else {
     ToastUtils.showShort(MySignInActivity.this, getString(R.string.query_failure));
    }
   }
  });
 }

}

日历小圆点装饰,重写 DayViewDecorator

public class EventDecorator implements DayViewDecorator {

 private int color;
 private HashSet<CalendarDay> dates;

 public EventDecorator(int color, Collection<CalendarDay> dates) {
 this.color = color;
 this.dates = new HashSet<>(dates);
 }

 @Override
 public boolean shouldDecorate(CalendarDay day) {
 return dates.contains(day);
 }

 @Override
 public void decorate(DayViewFacade view) {
 view.addSpan(new DotSpan(7, color));
 }
}

总结

到此这篇关于Android项目实战之地点签到功能(百度地图)的文章就介绍到这了,更多相关android 地点签到内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • android实现百度地图自定义弹出窗口功能

    我们使用百度地图的时候,点击地图上的Marker,会弹出一个该地点详细信息的窗口,如下左图所示,有时候,我们希望自己定义这个弹出窗口的内容,或者,干脆用自己的数据来构造这样的弹出窗口,但是,在百度地图最新的Android SDK中,没有方便操作这种弹出窗口的类,虽然有一个PopupOverlay,但是它只支持将弹出内容转化为不多于三个Bitmap,如果这个弹出窗口里想有按钮来响应点击事件,用这个就不能满足要求了,于是,看了一遍百度地图覆盖物的API,我决定用自定义View的方法来实现类似的效果,

  • Android百度地图自定义公交路线导航

    一.问题描述 基于百度地图实现检索指定城市指定公交的交通路线图,效果如图所示 二.通用组件Application类,主要创建并初始化BMapManager public class App extends Application { static App mDemoApp; //百度MapAPI的管理类 public BMapManager mBMapMan = null; // 授权Key // 申请地址:http://dev.baidu.com/wiki/static/imap/key/ p

  • Android百度地图应用之MapFragment的使用

    一.简介  TextureMapFragment:用于显示地图片段.  二.示例3--Demo03MapFragment.cs  文件名:Demo02MapFragment.cs  简介:介绍在Fragment框架下使用地图  详述:介绍如何在Fragment框架下添加一个TextureMapFragment控件:  1.运行截图  在x86模拟器中运行的效果如下: 2.设计步骤  在上一节例子的基础上,只需要再增加下面的步骤即可.  (1)修改布局文件 将demo02_fragment.xml

  • Android下如何使用百度地图sdk

    可以使用该套 SDK开发适用于Android系统移动设备的地图应用,通过调用地图SDK接口,您可以轻松访问百度地图服务和数据,构建功能丰富.交互性强的LBS(地图类)应用程序. 百度地图Android SDK提供的所有服务是免费的,接口使用无次数限制.您需申请密钥(key)后,才可使用百度地图Android SDK.任何非营利性产品请直接使用.这弦外之音就是盈利的产品必须帮百度给钱. 一.百度地图api平台. 百度地图API网址:http://developer.baidu.com/map/sd

  • Android 调用百度地图API示例

    Android 调用百度地图API 一.到 百度地图开发平台下载SDK http://lbsyun.baidu.com/index.php?title=androidsdk/sdkandev-download 1.点击自定义下载 2.下载自己想要的功能包我这里选了三个 3.获取密钥 获取密钥之前我们要新建一个应用 填写好相关的信息 二. 新建一个项目工程 1. 把下载好的百度sdk中的jar包拷贝到项目的libs目录下 2.在application中添加开发密钥 3.添加所需的权限 <uses-

  • 基于Android实现百度地图定位过程详解

    一.问题描述 LBS位置服务是android应用中重要的功能,应用越来越广泛,下面我们逐步学习和实现lbs相关的应用如定位.地图.导航等,首先我们看如何基于百度地图实现定位功能 二.配置环境 1.注册密钥:地址http://developer.baidu.com/map/ 2.下载定位SDK,并导入SDK如图所示: 三.编写MyApplication类 编写MyApplication类,为了使用方便我们可以将实现定位的方法封装的Application组件中 封装下列方法 1.  获取定位信息--

  • Android百度地图定位后获取周边位置的实现代码

    本文实例讲解Android百度地图定位后获取周边位置的实现代码,分享给大家供大家参考,具体内容如下 效果图: 具体代码: 1.布局文件 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical&q

  • Android项目实战之百度地图地点签到功能

    前言:先写个简单的地点签到功能,如果日后有时间细写的话,会更加好好研究一下百度地图api,做更多逻辑判断. 这里主要是调用百度地图中的场景定位中的签到场景.通过官方文档进行api集成.通过GPS的定位功能,获取地理位置,时间,用户名进行存储.之后通过日历显示历史签到记录. 效果图: /**百度地图sdk**/ implementation files('libs/BaiduLBS_Android.jar') /**日历选择器**/ implementation 'com.prolificinte

  • iOS实现百度地图定位签到功能

    写在前面: 项目需求用到这个功能,主要目的是实现老师设置位置签到范围,学生在一定范围内进行签到的功能. 功能如下方截图: 屏幕快照 2019-01-28 上午10.29.26.png 简要介绍: 下面记录一下主要的实现流程,功能的实现主要是根据百度地图开发者官网提供的api文档,各项功能之间组合.百度地图的SDK现在分成了地图功能和定位功能两块不同的SDK,BaiduMapAPI这个是基础的地图功能,BMKLocationKit这个是定位功能.项目里实现定位签到功能用的的SDK包括上面说的这两个

  • Android 百度地图POI搜索功能实例代码

    在没介绍正文之前先给大家说下poi是什么意思. 由于工作的关系,经常在文件中会看到POI这三个字母的缩写,但是一直对POI的概念和含义没有很详细的去研究其背后代表的意思.今天下班之前,又看到了POI这三个字母,决定认认真真的搜索一些POI具体的含义. POI是英文的缩写,原来的单词是point of interest, 直译成中文就是兴趣点的意思.兴趣点这个词最早来自于导航地图厂商.地图厂商为了提供尽可能多的位置信息,花费了很大的精力去寻找诸如加油站,餐馆,酒店,景点等目的地,这些目的地其实都可

  • Android 项目实战之头像选择功能

    一.图片选择 1.1 目标 1.实现如图所示功能:能够出现相册和相机选项 2.能够对选择的图片进行裁剪 1.2 功能实现 1.2.1 Intent工具类封装 封装图片选择和图片裁剪的工具类 /** * 选择图片(从相册或相机) * @param uri 相机存储uri * @return */ public static Intent getPhotoSelectIntent(Uri uri){ Intent take = new Intent(MediaStore.ACTION_IMAGE_C

  • 详解在HTTPS 项目中使用百度地图 API

    百度地图 API 产品简介 百度地图 JavaScript API 是一套由 JavaScript 语言编写的应用程序接口,可帮助您在网站中构建功能丰富.交互性强的地图应用,支持 PC 端和移动端基于浏览器的地图应用开发,且支持 HTML5 特性的地图开发. 百度地图 JavaScript API 支持 HTTP 和 HTTPS,免费对外开放,可直接使用.接口使用无次数限制.在使用前,您需先申请密钥(ak)才可使用. 基础使用 引用百度地图 API, 将 "您的密匙" 替换为你在百度地

  • 详解vue在项目中使用百度地图

    第一步,去百度地图开发者申请秘钥. 第二步在项目中引入,具体如下 其中index.html存放地图链接,代码如下 然后在APP.vue里面实现,代码如下 <template> <div id="app"> <div id="allmap" ref="allmap"></div> <router-view></router-view> </div> </tem

  • vue项目中使用百度地图的方法

    1.在百度地图申请密钥: http://lbsyun.baidu.com/  将 <script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=密钥" ></script> 中的 密钥替换成你申请的,在 vue项目的index.html引用. 2. 在build 文件下下的 webpack.base.conf.js贴入代码 externals: {

  • 详解vue项目中调用百度地图API使用方法

    步骤一:申请百度地图密钥: JavaScript API v1.4以及以前的版本无序申请秘钥(ak),自v1.5版本开始需要先申请秘钥(ak),才可以使用,如需获取更高的配额,需要申请  认证企业用户.百度地图API 链接地址:http://lbsyun.baidu.com/apiconsole/key 步骤二:在index.html中添加百度地图JavaScript API接口: <script src="http://api.map.baidu.com/api?v=1.4"

  • Android项目实战之Glide 高斯模糊效果的实例代码

    核心需要高斯模糊的库 compile 'jp.wasabeef:glide-transformations:2.0.1' 针对于3.7的版本 使用方法为: //加载背景, Glide.with(MusicPlayerActivity.this) .load(service.getImageUri()) .dontAnimate() .error(R.drawable.no_music_rotate_img) // 设置高斯模糊,模糊程度(最大25) 缩放比例 .bitmapTransform(n

  • 如何在vue项目中使用百度地图API

    目录 1.在百度地图开放平台注册账号并登录 2.选择自己所需的地图版本: 3.在我们的vue项目中的public文件夹下的index.html中引入并记得替换上你的ak(这个ak不是其他的ak哈) 4.之后就可以随处使用我们的百度地图了: 5.标记点的添加并拥有点击弹窗效果: 6.为坐标点添加文本标记: 1.在百度地图开放平台注册账号并登录 网址:http://lbsyun.baidu.com/index.php?title=jspopularGL 2.选择自己所需的地图版本: 我个人使用2.0

随机推荐