java微信開發之地圖定位

来源:https://www.cnblogs.com/sqy-yyr/archive/2018/07/25/9364046.html
-Advertisement-
Play Games

頁面代碼: <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <% String path = request.getContextPath(); String basePat ...


頁面代碼:

<%@ 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="stylesheet" />
    <script src="<%=basePath %>js/jquery-2.1.0.js" type="text/javascript" charset="utf-8"></script>
    <link href="<%=basePath %>js/master.css" 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:;">保存</a>
                <a id="getlocation" href="javascript:;">地圖</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>
View Code

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 前言 上一篇文章以v-on指令綁定click事件為例介紹了v-on指令的使用方法,本文介紹一下v-on綁定事件的一些屬性的使用方法。 v-on綁定指令屬性 .stop屬性 阻止單擊事件繼續向上傳播(簡單點說就是不讓父節點及父節點以上的節點事件觸發),本示例如果沒有stop屬性,父節點和爺爺節點事件將 ...
  • // 6.2.4 組合使用構造函數和原型模式————創建自定義對象的方法: function Person(name, age, job) { this.name = name; this.age = age; this.job = job; this.friends = ["Shelby", "C ...
  • <!-- 解決圖片旋轉 --> <script src="/libs/jquery/jquery.min.js"></script> <script src="/libs/exif/exif.js"></script> // html <input type="file" accept="image ...
  • 緩存這個東西相信大家工作中都接觸得比較多,相應的在不同場景下也會遇到各種各樣的問題。下麵我列舉幾種可能會遇到的問題並提供一些解決建議。 1、如何把海量數據存放在緩存中並提供快速查詢 現實中我們的緩存通常都是以string,map,array,list,set,tree等具體的類型或者集合存放記憶體中, ...
  • 在簡單工廠模式中產品的創建統一在工廠類的靜態工廠方法中創建,體現了面形對象的封裝性,客戶程式不需要知道產品產生的細節,也體現了面向對象的單一職責原則(SRP),這樣在產品很少的情況下使用起來還是很方便, 但是如果產品很多,並且不斷的有新產品加入,那麼就會導致靜態工廠方法變得極不穩定,每次加入一個新產 ...
  • guava是google的一個開源java框架,其github地址是 https://github.com/google/guava。guava工程包含了若幹被Google的 Java項目廣泛依賴的核心庫,例如:集合 [collections] 、緩存 [caching] 、原生類型支持 [prim ...
  • 主要使用三種集成環境進行安裝,小主們可以自行選擇: ...
  • 一、xxxxxx獲取指定任務爬取的所有url的介面 介面名稱:xxxxxx獲取指定任務爬取的所有url的介面 訪問鏈接: http://IP:PORT/crwalTask/findUrlExceptionById?ctId=ctIdVal&time=timeVal&limit=limitVal 傳入 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...