zoukankan      html  css  js  c++  java
  • 基于angularJs坐标转换指令(经纬度中的度分秒转化为小数形式 )

        最近项目中,需要用户输入经纬度信息,因为数据库设计的时候,不可能分三个字段来存储这种信息,只能用double类型来进行存储。

        计算公式  double r=度+分/60+秒/3600 

        

    <!DOCTYPE html>
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
        <script src="../bower_components/angular/angular.js"></script>
        <link href="../bower_components/bootstrap/dist/css/bootstrap.css" rel="stylesheet" />
        <title>经纬度转换控件</title>
        <style>
            .coordSpan {
                position: relative; 
                display: inline-block;
                height: 34px;
                padding-right: 2px;
            }
            .coordInput{
                height: 34px; 
                width: 40px; font-size: 14px;
                border-radius: 4px;
                border: 1px solid #ccc; 
                text-align: center;
            }
            .coordSign {
                display: inline-block; 
                width: 3px; height: 4px; 
                position: absolute; top: 0;
                right: -1px;
            }
        </style>
    
        <script>
                var app = angular.module("app", [], function () {
                    console.log("test");
                });
                app.controller("test", ["$scope", function ($scope) {
                    $scope.longitude = 113.211;
                    console.log($scope.longitude);
                    $scope.$watch("longitude",function(newValue,oldValue) {
                        console.log(newValue);
                    });
                }]);
                app.directive("coordTransform", function () {
                    return {
                        restrict: 'E',
                        scope: {
                            ngModel:"="
                        },
                        templateUrl: function () {
                            return "LongitudeAndLatitudeTemplate.html";
                        },
                        link: function (scope, elements, attrs) {
                             if (angular.isUndefined(scope.ngModel)) {
                                 return "";
                             }
                             scope.obj = {
                                du: null,
                                fen: null,
                                miao: null
                            };
                            var model = scope.ngModel.toString();
                            var str = model.split(".");
                             //
                            var du = str[0];
                             //
                            var tp = "0." + str[1];
                            var res = String(tp * 60);
                            var str1 = res.split(".");
                            var fen = str1[0];
                            //
                            var tp1 = "0." + str1[1];
                            var miao = tp1 * 60;
    
                            scope.obj = {
                                du: du,
                                fen: fen,
                                miao:miao
                            };
                            scope.$watch("obj", function (newValue, oldValue) {
                                if (angular.isUndefined(oldValue) || angular.isUndefined(newValue)||oldValue===newValue) {
                                    return;
                                }
                                var f = parseFloat(scope.obj.fen) + parseFloat(scope.obj.miao / 60);
                                scope.ngModel = parseFloat(scope.obj.du) + parseFloat(f / 60);
                               // scope.$apply(scope.ngModel);
                            },true);
                        }
                    }
                });
        </script>
    </head>
    
    
    <body ng-app="app" ng-controller="test">
        <h1>这里是经纬度转换实例</h1>
       <coord-transform ng-Model="longitude"></coord-transform>
    
    </body>
    </html>

    下面是模板的html文件

    <div>
        <span class="coordSpan">
            <input type="text" ng-model="obj.du" class="coordInput" />
            <span class="coordSign">°</span>
        </span>
        <span class="coordSpan">
            <input type="text"  ng-model="obj.fen" class="coordInput"/>
            <span class="coordSign">'</span>
        </span> 
        <span class="coordSpan">
            <input type="text" ng-model="obj.miao" class="coordInput" />
            <span class="coordSign"> "</span>
        </span>
    </div>
    

     项目地址:https://github.com/gdoujkzz/coord-transform.git

  • 相关阅读:
    【转】win7“您可能没有权限使用网络资源”的解决办法
    windows下顽固软件卸载不了的解决方法
    【转】Windows Server 2008修改远程桌面连接数
    winserver2008,运行可执行文件,提示 激活上下文生成失败。 找不到从属程序集 Microsoft.VC90.DebugCRT,processorArchitecture="x86"
    保障视频4G传输的流畅性,海康威视摄像头相关设置
    【转】win7如何设置共享目录,并且访问不需要输入用户名和密码。
    CentOS7.1配置远程桌面
    C++遍历目录,并把目录里超过7天的文件删除(跨平台windows&linux)
    hibernate(二)一级缓存和三种状态解析
    Android进程间的通信之AIDL
  • 原文地址:https://www.cnblogs.com/gdouzz/p/6548338.html
Copyright © 2011-2022 走看看