2016-07-12 5 views
-1

地図上のユーザーの事前定義された座標を示し、これはAngularJSが、私はそれを記録したときに、私は地図上のユーザーの事前定義された座標を示すだろう

map.html私のマップです

<!DOCTYPE html> 
<!-- 
To change this license header, choose License Headers in Project Properties. 
To change this template file, choose Tools | Templates 
and open the template in the editor. 
--> 
<html> 
    <head> 
    <meta charset="utf-8"> 
    <meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no, width=device-width"> 
    <title></title> 

    <link href="lib/ionic/css/ionic.css" rel="stylesheet"> 
    <link href="css/style.css" rel="stylesheet"> 

    <!-- IF using Sass (run gulp sass first), then uncomment below and remove the CSS includes above 
    <link href="css/ionic.app.css" rel="stylesheet"> 
    --> 

    <!-- ionic/angularjs js --> 
    <script src="lib/ionic/js/ionic.bundle.js"></script> 

    <script src="https://maps.googleapis.com/maps/api/js?key=AIzaSyB16sGmIekuGIvYOfNoW9T44377IU2d2Es&sensor=true"></script> 

    <!-- cordova script (this will be a 404 during development) --> 
    <script src="cordova.js"></script> 

    <!-- your app's js --> 
    <script src="js/app.js"></script> 
    <script src="js/controllers.js"></script> 
    <script src="js/directives.js"></script> 
    </head> 
    <body ng-app="starter" ng-controller="MapCtrl"> 
    <ion-header-bar class="bar-stable"> 
     <h1 class="title">Map</h1> 
    </ion-header-bar> 

    <ion-content scroll="false"> 
     <map on-create="mapCreated(map)"></map> 
    </ion-content> 

    <ion-footer-bar class="bar-stable"> 
     <a ng-click="centerOnMe()" class="button button-icon icon ion-navigate"></a> 
    </ion-footer-bar> 
    </body> 
</html> 

とこれは私のコントローラである

controllers.js

angular.module('starter.controllers', []) 
.controller('MapCtrl', function($scope, $ionicLoading, $cordovaGeolocation) { 
$scope.mapCreated = function(map) { 
    $scope.centerOnMe = function() { 
    console.log("Centering"); 
    if (!$scope.map) { 
     return; 
    } 
    $scope.loading = $ionicLoading.show({ 
     content: 'Getting current location...', 
     showBackdrop: false 
    }); 
navigator.geolocation.getCurrentPosition(function (pos) { 
     console.log('Got pos', pos); 
     $scope.map.setCenter(new google.maps.LatLng(pos.coords.latitude, pos.coords.longitude)); 
     $scope.loading.hide(); 
    }, function (error) { 
     alert('Unable to get location: ' + error.message); 
    }); 
    }; 
}); 
.controller('MapCtrl', function ($scope,geolocation) { 
    geolocation.getLocation().then(function(data){ 
     $scope.coords = {lat:data.coords.latitude, long:data.coords.longitude}; 
    }); 
}); 

loginController.js

var app=angular.module('starter', ['ionic', 'starter.controllers', 'starter.directives', 'ui.router']) 
    .config(function($stateProvider, $urlRouterProvider, $httpProvider, $locationProvider){ 
    console.log('test'); 

    $stateProvider 
     .state('map', { 
     url: '/map', 
     templateUrl: 'map.html', 
     controller: 'MapCtrl' 
}) 
$urlRouterProvider.otherwise('/index'); 
    }); 


app.controller('loginCtrl', function ($scope,$http,$location,$state) 
{ 

    $scope.data = {}; 
    $scope.postLogin = function() 
    { 

     var data = 
     { 
       email: $scope.data.email, 
       password: $scope.data.password, 
       lat: $scope.data.latitude, 
       lang: $scope.data.langitude 
     }; 

     console.log('bonjour'); 
     $http.post("http://localhost/authproject/public/api/auth/login", data) 
     .then(
      function(response){ 
      // success callback 
      console.log('success'); 
      $location.path('/map'); 
      $scope.data.latitude=response.latitude; 
      $scope.data.langitude=response.langitude; 
      $scope.map.setCenter(new google.maps.LatLng(data.lat, data.long)); 

      }, 
      function(response){ 
      // failure callback 

      console.log('error'); 
      alert('invalid user '); 
      //$location.path('/index'); 

      } 
     ); 



    } 

}); 

私は、データベース内の任意のユーザーの定義された場所を事前に追加すべきか。 は、すべてのユーザーに対してだけで同じ位置にマップを設定したい場合は、あなたが行うことができ、事前

+0

助けてください:) – Sarah

+0

正確に何が必要ですか?データベースからデータを取得し、それをマップで使用するコード? – Episodex

+0

自分のデータベースに多くのユーザーがいます。ユーザーと一緒にログインしてもらいたい場合は、静的な場所にアクセスしてください。地図にあらかじめ定義されているか、アドレスに基づいてGoogle Map Imageを使用する必要があります – Sarah

答えて

1

に存じ:

var lat = 51.123456; 
var lgt = 5.123456; 
$scope.map.setCenter(new google.maps.LatLng(lat, lgt)); 

あなたが個別に各ユーザー用に定義された場所への最初のアクセスを、それを設定する場合DBを取得し、ユーザーの緯度と経度を取得し、そこに設定します。

あなたの質問が正しいと分かっている場合、ブラウザで提供されている場所を使用したくないので、navigator.geolocation.getCurrentPositionはまったく必要ありません。

EDIT:データを得ることについて

あなたの質問は非常に広いですが、次のように一般的な考え方です。

dataService.loadUser(currentUserId).then(function(data) { 
    $scope.map.setCenter(new google.maps.LatLng(data.latitude, data.longitude)); 
}); 

これは、あなたもあなたが使用するIDまたはユーザ名または任意のアイデンティティであるかを知る必要があることを示しています。あなたは(たとえばdataService用)データベースを扱ういくつかのサービスを作成する必要があり、あなたがマップを設定するためにそれを使用することができます現在の使用者。

+0

あなたの回答を考えて、私は別のユーザーごとに定義された場所に設定したい、私はデータベースのユーザーのために緯度と経度を追加し、何がコントローラに追加する必要があります機能は何ですか? – Sarah

+0

somene答えてください – Sarah

+0

回答。 – Episodex

関連する問題