5

シンプルな Google マップ プロジェクト (サイトの例から文字通り実行) を AngularJS プロジェクトに移行しようとしています。私はAngularJSとWeb開発の両方に慣れていないので、親切にお願いします:) https://github.com/eroth/angular-web-appに簡単なプロジェクトがあります(メインファイルは以下のとおりです) ) Google マップのチュートリアルを使用した最初のコミットから、それを AngularJS アプリに変換しようとしましたが$scope.init()、MapController.js ファイルで自分の関数を確認したにもかかわらず、機能させることができませんでした。私のmap.htmlファイルから呼び出されています。

私の質問は 2 つあります。コードに何か問題があるのでしょうか、それとも次のようなものが必要ですか (これは非常に優れているようです): http://nlaplante.github.io/angular-google-maps/ ? これを別のブランチのプロジェクトに組み込む作業を行っていますが、既存のコードに問題があるのか​​ 、それとも AngularJS で動作させるためにこのライブラリのようなものが必要なのかを把握しようとしています。後者なら、なぜですか?私が犯している非常に単純な間違いである場合は、事前にお詫び申し上げます。私が言ったように、私はこれらすべてにかなり慣れていませんが、いくつかのAngularJSチュートリアルを経験しましたが、それは素晴らしいようです.

これは私の map.html ファイルです:

<!DOCTYPE html>
<html>
  <head>
    <meta charset = "utf-8">
    <meta name="viewport" content="initial-scale=1.0, user-scalable=no" />

    <!-- INCLUDE REQUIRED THIRD PARTY LIBRARY JAVASCRIPT AND CSS -->
    <script type="text/javascript" src="js/angular.min.js"></script>
    <link rel="stylesheet" href="css/bootstrap.min.css">
    <link rel="stylesheet" href="css/bootstrap-responsive.min.css">

    <!-- INCLUDE APPLICATION SPECIFIC CSS AND JAVASCRIPT -->
    <script type="text/javascript"
      src="http://maps.googleapis.com/maps/api/js?sensor=true&language=en">
    </script>
    <script type="text/javascript" src="js/web-app/app.js"></script>
    <script type="text/javascript" src="js/web-app/controllers/mainController.js"></script>
    <link rel="stylesheet" href="css/main.css">
  </head>
  <body>
    <div class="container main-frame" ng-app="WebApp" ng-controller ="mainController" ng-init="init()">
      <div id="map-canvas"/>
    </div>
  </body>
</html>

そして、これは私の MapController.js ファイルです:

app.controller("mainController", function($scope, $http){
$scope.initialLocation;
$scope.siberia = new google.maps.LatLng(60, 105);
$scope.newyork = new google.maps.LatLng(40.7463, -73.9913);
$scope.browserSupportFlag =  new Boolean();
$scope.map;
$scope.retina = window.devicePixelRatio > 1;

$scope.init = function () {
    var mapOptions = {
      zoom: 13,
      mapTypeId: google.maps.MapTypeId.ROADMAP
    };

    console.log('In main init');

    //first test——map uses hard-coded location, next will get user's location and pull deals
    $scope.map = new google.maps.Map(document.getElementById("map-canvas"),
        mapOptions);

    // Try W3C Geolocation (Preferred)
    if (navigator.geolocation) {
      $scope.browserSupportFlag = true;
      navigator.geolocation.getCurrentPosition(function(position) {
        $scope.initialLocation = new google.maps.LatLng(position.coords.latitude, position.coords.longitude);
        var currentLat = position.coords.latitude;
        var currentLon = position.coords.longitude;
        $scope.map.setCenter($scope.initialLocation);
        // performApiCall(currentLat, currentLon);

        //definite custom map pin for user location & plot it on map
        var pinColor = "5ea9ff";
        var pinImage = new google.maps.MarkerImage("http://chart.apis.google.com/chart?chst=d_map_spin&chld=0.6|0|" + pinColor + "|0|_|k",
        new google.maps.Size(25, 60),
        new google.maps.Point(0,0),
        new google.maps.Point(10, 24));
        var marker = new google.maps.Marker({
            position: $scope.initialLocation,
            map: $scope.map,
            icon: pinImage,
        });
      }, function() {
        handleNoGeolocation($scope.browserSupportFlag);
      });
    }

    // Browser doesn't support Geolocation
    else {
      $scope.browserSupportFlag = false;
      handleNoGeolocation($scope.browserSupportFlag);
    }

    function handleNoGeolocation(errorFlag) {
      if (errorFlag == true) {
        alert("Geolocation service failed.");
        $scope.initialLocation = newyork;
      } else {
        alert("Your browser doesn't support geolocation. We've placed you in Siberia.");
        $scope.initialLocation = siberia;
      }
      map.setCenter($scope.initialLocation);
    }
};

google.maps.event.addDomListener(window, 'load', $scope.init);
});

助けてくれてありがとう!

4

1 に答える 1