java微信开发中的地图定位功能

页面代码:

<%@ page language="java" contentType="text/html; charset=UTF-8"
  pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
  <title>填写基本信息</title>
  <link href="<%=basePath %>js/common.css" rel="external nofollow" rel="stylesheet" />
  <script src="<%=basePath %>js/jquery-2.1.0.js" type="text/javascript" charset="utf-8"></script>
  <link href="<%=basePath %>js/master.css" rel="external nofollow" rel="stylesheet" />
</head>
<body style="background: #f5f5f5;">
  <section>
    <div class="content-detail">
      <div class="detail mt20">
        <div class="detail-div"><span class="name">物品名称</span><span class="shuru"><input type="text" id="wpmc"></span></div>
        <div class="wxapi_container">
          <div class="lbox_close wxapi_form">
            <!-- <div style="clear:both"></div>
            <!-- <div style="clear:both"></div> -->
            <span class="desc">拍照或从手机相册中选择图片</span>
             <button class="btn btn_primary" id="chooseImage">选择图片</button>
            <!-- <h3 id="menu-image">已选择图片</h3> -->
            <div id="imgs"></div>
            <button class="btn btn_primary" id="uploadImage">上传图片</button>
            <h3 id="upload-image">已上传图片</h3>
            <div id="uploadImgs"></div>
            <!-- <button class="btn btn_primary" id="postData">提交</button> -->
          </div>
        </div>
        <div class="detail-div detail-div-ha"><span class="name">物品描述</span><span class="shuru"><textarea id="wpms" rows="6" cols=""></textarea></span></div>
        <div class="detail-div"><span class="name">经度</span><span class="shuru"><input id="jingdu" type="text"></span></div>
        <div class="detail-div"><span class="name">纬度</span><span class="shuru"><input id="weidu" type="text"></span></div>
        <div class="detail-div"><span class="name">地址</span><span class="shuru"><input id="dizhi" type="text"></span></div>
        <div class="detail-div"><span class="name">海拔</span><span class="shuru"><input id="haiba" type="text"></span></div>
      </div>
      <div class="detail-btn">
        <a class="save" id="postData" href="javascript:;" rel="external nofollow" rel="external nofollow" >保存</a>
        <a id="getlocation" href="javascript:;" rel="external nofollow" rel="external nofollow" >地图</a>
      </div>
    </div>
  </section>
   <div id="map" style="height:200px;left:"class="content-detail"></div>
   <div id="map1" style="height:200px;left:"class="content-detail"></div>
</body>
<script charset="utf-8" src="http://res.wx.qq.com/open/js/jweixin-1.2.0.js"></script>
<script src="http://ditu.google.cn/maps/api/js?key=AIzaSyDcGSUQz920n7V2LaPVs-tH9qMhkaHkTyo&language=zh-CN"></script>
  <script type="text/javascript">
  var images = {
      index:1,  //用于产生全局图片id,绑定已选择图片和已上传图片
      selectIds: {}, //保存已经选择的图片id
      uploadIds:{} //保存已经上传到微信服务器的图片
    };
  wx.config({
    debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
    appId: '${appid}', // 必填,企业号的唯一标识,此处填写企业号corpid
    timestamp: '${timestamp}', // 必填,生成签名的时间戳
    nonceStr: '${nonceStr}', // 必填,生成签名的随机串
    signature: '${signature}',// 必填,签名,见附录1
    jsApiList: ['getLocation','openLocation','chooseImage','uploadImage','downloadImage'] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2
  });
  function i(i, a) {
    var t = 52.35987755982988,
    e = a,
    n = i,
    o = Math.sqrt(e * e + n * n) + 2e-5 * Math.sin(n * t),
    l = Math.atan2(n, e) + 3e-6 * Math.cos(e * t),
    d = o * Math.cos(l) + .0065,
    s = o * Math.sin(l) + .006;
    return {
      longitude: d,
      latitude: s
    }
  }
  var lat;
  var lng;
  wx.ready(function () {
    wx.getLocation({
      type: 'gcj02', // 默认为wgs84的gps坐标,如果要返回直接给openLocation用的火星坐标,可传入'gcj02'
      success: function (res) {
        lat = res.latitude; // 纬度,浮点数,范围为90 ~ -90
        lng = res.longitude; // 经度,浮点数,范围为180 ~ -180。
        var speed = res.speed; // 速度,以米/每秒计
        var accuracy = res.accuracy; // 位置精度
        var e = i(lng,lat);
        //alert(e.longitude + ',' + e.latitude);
        $("#jingdu").val(lng);
        $("#weidu").val(lat);
        //goole api 获得海拔
         var elevator = new google.maps.ElevationService;
         var latLng = {"lat":lat,"lng":lng};
           elevator.getElevationForLocations({
            'locations': [latLng]
           }, function(results, status) {
            if (status === 'OK') {
             if (results[0]) {
               $("#haiba").val(results[0].elevation+"米");
             } else {
             }
            } else {
            }
            });
        var MJKD_LATLNG = e.longitude + ',' + e.latitude;
        var url = 'http://api.map.baidu.com/geocoder/v2/?ak=6yAoynmTPNlTBa8z1X4LfwGE&location=' + MJKD_LATLNG + '&output=json&pois=1';
        $.get(url, function(data) {
         if(data.status === 0) {
          //alert(data.result.formatted_address + '=>' + data.result.sematic_description);
           $("#dizhi").val(data.result.sematic_description);
         }
        }, 'jsonp');
      }
    });
    // 图片接口
    // 拍照、本地选图
    $("#chooseImage").on("click", function () {
      wx.chooseImage({
        success: function (res) {
          for (var i = 0; i < res.localIds.length; i++) {
             //全局图片id,绑定微信选择图片产生的localId,将用户选择图片追加到已选择图片
            var id = '' + images.index++;
            images.selectIds[id] = res.localIds[i];
            $('#imgs').append('<div class="imgdiv"><div class="box"><input id="' + id +'" type="checkbox"/><img style="width:200px;height:200px" src="' + res.localIds[i] + '" /></div></div>');
          }
          console.log('已选择了 ' + Object.keys(images.selectIds).length + ' 张图片');
        }
      });
    });
    //上传图片(保存到js)
    $("#uploadImage").on("click", function () {
      if (Object.keys(images.selectIds).length == 0) {
        alert('请先选择图片');
        return;
      }
      var i = 0, length = Object.keys(images.selectIds).length;
      var selectIds = []; //需要上传的图片的全局图片id
      for(var id in images.selectIds){
        selectIds.push(id);
      }
      function upload() {
        wx.uploadImage({
          localId: images.selectIds[selectIds[i]], //根据全局图片id获取已选择图片
          isShowProgressTips: 0, // 默认为1,显示进度提示
          success: function (res) {
            //上传成功,images.selectIds中移除,images.uploadIds追加
            //图片从已选择移到已上传区域
            var selectId = selectIds[i];
            localId = images.selectIds[selectId];
            removeId(selectId);
            $('#uploadImgs').append('<div class="imgdiv"><div class="box"><input id="' + selectId +'" type="checkbox"/><img style="width:200px;height:200px" src="' + localId + '" /></div></div>');
            images.uploadIds[selectId] = res.serverId
            i++;
            if (i < length) {
              console.log('已上传成功 ' + i + '/' + length);
              upload();
            } else {
              alert('图片上传完毕, 已上传成功 ' + i + '/' + length);
            }
          },
          fail: function (res) {
            alert('上传失败 ' + i + '/' + length);
          }
        });
      }
      upload();
    });
  });
    //保存
    $('#postData').click(function () {
      var wpmc = $("#wpmc").val();
      var wpms = $("#wpms").val();
      var jingdu = $("#jingdu").val();
      var weidu = $("#weidu").val();
      var dizhi = $("#dizhi").val();
      if (Object.keys(images.uploadIds).length == 0) {
        alert('请先上传图片');
        return false;
      }
      var serverIds = [];
      var serverId;
      for(var id in images.uploadIds){
        serverIds.push(images.uploadIds[id]);
      }
      var data = {
        'imgIds': serverIds
      }
      $.ajax({
        type: "post",
        async: false,
        url: '/uploadImgData',
        data: {"data": JSON.stringify(data), "wpmc":wpmc , "wpms":wpms , "jd":jingdu, "wd": weidu, "dz":dizhi},
        dataType: "text",
        success: function (data) {
          if (data == "success") {
             alert('保存成功!');
             location.reload();
          } else {
            alert('保存失败');
          }
        },
        error: function (e) {
          alert(11);
        }
      });
    });
  //点击复选按钮,删除.
  $("body").on('click', ':checkbox', function(){
    var id = $(this).attr('id');
    removeId(id);
  });
  function removeId(id){
    if(id in images.selectIds){
      delete images.selectIds[id]
    }else{
      delete images.uploadIds[id]
    }
    $('#' + id).parent().parent().remove();
  }

  //获取地图
  $("#getlocation").click(function(){
    wx.openLocation({
      latitude: lat, // 纬度,浮点数,范围为90 ~ -90
      longitude:lng, // 经度,浮点数,范围为180 ~ -180。
      name: $("#dizhi").val(), // 位置名
      address: '当前位置', // 地址详情说明
      scale: 16, // 地图缩放级别,整形值,范围从1~28。默认为最大
      infoUrl: '' // 在查看位置界面底部显示的超链接,可点击跳转
    });
  })
  </script>
</html>

总结

以上所述是小编给大家介绍的java微信开发中的地图定位功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!

(0)

相关推荐

  • java微信开发API第三步 微信获取以及保存接口调用凭证

    微信如何获取以及保存接口调用凭证,下面就为大家进行介绍 一.说明 *详细说明请参考前两篇文章. *本文分为三部分:     接口调用凭证access_token的作用以及解释     如何获取接口调用凭证access_token     如何实现微信文档所说的"中控服务器"的实现以保存access_token * 本文结束会给出包括本文前三篇文章的所有演示源码  为什么要获取和保存接口调用凭证access_token  •开始开发-获取接口调用凭据 ◦文档地址:http://mp.we

  • 微信开发之使用java获取签名signature

    一.前言 微信接口调用验证最终需要用到的三个参数noncestr.timestamp.signature: 接下来将会给出获取这三个参数的详细代码 本文的环境eclipse + maven 本文使用到的技术HttpClient.Json字符串转map.sha1加密 二.需要用到的jar包 maven依赖的包有: 1.HttpClient包依赖 <dependency> <groupId>org.apache.httpcomponents</groupId> <ar

  • java微信开发第二步 获取消息和回复消息

    接着上一篇java微信开发API第一步 服务器接入进行学习,下面介绍java微信开发第二步:获取消息和回复消息,具体内容如下 * 本示例根据微信开发文档:http://mp.weixin.qq.com/wiki/home/index.html最新版(4/3/2016 5:34:36 PM )进行开发演示. * 编辑平台:myeclipse10.7+win32+jdk1.7+tomcat7.0  * 服务器:阿里云 windows server 2008 64bits * 平台要求:servlet

  • java微信开发之上传下载多媒体文件

    回复图片.音频.视频消息都是需要media_id的,这个是需要将多媒体文件上传到微信服务器才有的. 将多媒体文件上传到微信服务器,以及从微信服务器下载文件,可以参考:http://mp.weixin.qq.com/wiki/index.php?title=上传下载多媒体文件 上传下载多媒体文件的方法还是写到WeixinUtil.java中. 代码如下: import java.io.BufferedOutputStream; import java.io.BufferedReader; impo

  • java微信开发API第一步 服务器接入

    微信开发API如何接入服务器,下面就为大家进行介绍 一.说明 * 本示例根据微信开发文档:http://mp.weixin.qq.com/wiki/home/index.html最新版(4/3/2016 5:34:36 PM )进行开发演示. * 编辑平台:myeclipse10.7+win32+jdk1.7+tomcat7.0  * 服务器:阿里云 windows server 2008 64bits * 平台要求:servlet使用注解方式,平台要求:j2ee6.0+.jdk6.0+.tom

  • java微信开发API第四步 微信自定义个性化菜单实现

    微信如何实现自定义个性化菜单,下面为大家介绍 一.全局说明 详细说明请参考前两篇文章. 二.本文说明 本文分为五部分:     * 工具类AccessTokenUtils的封装     * 自定义菜单和个性化菜单文档的阅读解析     * 菜单JSON的分析以及构建对应bean     * 自定义菜单的实现     * 个性化菜单的实现 微信自定义菜单所有类型菜单都给出演示 本文结束会给出包括本文前四篇文章的所有演示源码 工具类AccessTokenUtils的封装 在上文中关于AccessTo

  • java微信开发中的地图定位功能

    页面代码: <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+&q

  • 讲解iOS开发中基本的定位功能实现

    一.简单说明 1.CLLocationManager   CLLocationManager的常用操作和属性   开始用户定位- (void)startUpdatingLocation;   停止用户定位- (void) stopUpdatingLocation;   说明:当调用了startUpdatingLocation方法后,就开始不断地定位用户的位置,中途会频繁地调用代理的下面方法 复制代码 代码如下: - (void)locationManager:(CLLocationManager

  • JS开发中百度地图+城市联动实现实时触发查询地址功能

    缘由: 由于项目需要实现一个根据省市区+详细地址的路径进行查询地址的功能. 所用技术:百度地图API+jQuery 实现步骤: 1.省市区三级联动(ps:已经忘记这个小插件的出处的) 引入area.js /* * 全国三级城市联动 js版 */ function Dsy(){ this.Items = {}; } Dsy.prototype.add = function(id,iArray){ this.Items[id] = iArray; } Dsy.prototype.Exists = f

  • vue中百度地图定位及附近搜索功能使用步骤

    目录 1.地图初始化相关 2.获取当前定位 3.根据当前定位地址附近搜索建议 1.地图初始化相关 文档:lbs.baidu.com/index.php?t… 申请账号 => 创建应用 => 生成key值 => 引入百度地图,替换key值 在出口html(public/html)文件下引入标签 <script type="text/javascript" src="https://api.map.baidu.com/api?v=1.0&&

  • vue中实现高德定位功能

    一.获取key及在index.htm中引入 首先需要成为高德开发者,申请到适合项目的key.并在index.html中进行引入 <script type="text/javascript" src="https://webapi.amap.com/maps?v=1.4.3&key=d79ff396531b948ce14d5be1c733fc36"></script> 二.在配置文件中进行相应配置 根据vue脚手架的不用需要在不同的文件

  • Android在类微信程序中实现蓝牙聊天功能的示例代码

    项目要求 1.初次打开程序时右上角标题栏显示"无连接",点击旁边的按钮选择"我的好友",进入配对界面: 2.选择好友之后,返回主界面,标题栏会显示已连接的手机型号: 3.两部手机间可通过蓝牙聊天 效果展示 项目结构 主要代码 1.在清单文件中注册权限 <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" /> <uses-permission and

随机推荐