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

  • 相关阅读:
    jdbc学习一半的代码
    实验室的毕业照
    IOS_地图_定位_天气预报_Block回调_单例
    POJ -1062 昂贵的聘礼(前向星 && SPFA)
    【监控】Nagios-NRPE脚本返回值
    cocos2d-x-3.0 Windos 新建项目(coco2d-x 学习笔记一)
    托付与事件
    Netty源代码学习——EventLoopGroup原理:NioEventLoopGroup分析
    vs2013 error c4996: 'fopen': This function or variable may be unsafe
    Customize User Interfaces and Pass User Input to Installer Classes
  • 原文地址:https://www.cnblogs.com/gdouzz/p/6548338.html
Copyright © 2011-2022 走看看