2017-06-01 239 views
0

我在我的應用程序中添加了谷歌地圖,並創建了一個標記,但是當我打開視圖時,我在屏幕上獲得了當前位置。離子谷歌地圖,如何設置標記上的位置?

我想要的是當谷歌地圖打開時,位置在標記上。
我正在使用cordova-plugin-geolocation。

更新代碼

.controller('mapCtrl', function($scope, $state, $http, $cordovaGeolocation) { 
    /// Main map 
    this.Tool = function() { 
      var markers = []; 
    $scope.id= sessionStorage.getItem('product_info_id'); 
    var str="http://www.manaspp.hol.es/markers.php?product_id="+$scope.id; 
     $http.get(str).then(function (response){ 
      markers = response; 
      console.log(markers); 
     var records = markers.data.markers; 
     for (var i = 0; i < records.length; i++) 
     { 
      var record = records[i]; 
    var myCenter = new google.maps.LatLng(record.lat, record.lng); 
    var mapOptions = { 
     center: myCenter, 
     zoom: 15, 
     disableDefaultUI: true 
    }; 
      $scope.map = new google.maps.Map(document.getElementById("map"), mapOptions); 
    google.maps.event.addListenerOnce($scope.map, 'idle', function(){ 
      loadMarkers(); 
     }); 
     } 
    }); 


    // Marker loading use php script 
    function loadMarkers(){ 
    var markers = []; 
    $scope.id= sessionStorage.getItem('product_info_id'); 
    var str="http://www.manaspp.hol.es/markers.php?product_id="+$scope.id; 
     $http.get(str).then(function (response){ 
      markers = response; 
      console.log(markers); 
     var records = markers.data.markers; 
     for (var i = 0; i < records.length; i++) 
     { 
      var record = records[i]; 
      var markerPos = new google.maps.LatLng(record.lat, record.lng); 

      // Add the markerto the map 
      var marker = new google.maps.Marker({ 
       map: $scope.map, 
       animation: google.maps.Animation.DROP, 
       position: markerPos 
      }); 
      var infoWindowContent = "<h4>" + record.name + "</h4>";   
      addInfoWindow(marker, infoWindowContent, record); 
     } 
    });  

    } 

    function addInfoWindow(marker, message, record) { 

     var infoWindow = new google.maps.InfoWindow({ 
      content: message 
     }); 

     google.maps.event.addListener(marker, 'click', function() { 
      infoWindow.open($scope.map, marker); 
     }); 
    } 
    window.location.href = "#/page10"; 
    } 
    }) 

回答

0

試試這個,

地圖將被集中到你的應用的標記。即myCenter

var myCenter = new google.maps.LatLng(latitude, longitude); 
    var mapCanvas = document.getElementById("googleMap"); 
    var mapOptions = { 
     center: myCenter, 
     zoom: 8, 
     disableDefaultUI: true 
    }; 
    var map = new google.maps.Map(mapCanvas, mapOptions); 
    var marker = new google.maps.Marker({position:myCenter}); 
    marker = new MarkerWithLabel({ 
    zoom: 8, 
    position: new google.maps.LatLng(latitude, longitude), 
    animation: google.maps.Animation.DROP, 
    labelAnchor: new google.maps.Point(10, 38), 
    labelClass: "markLabelsJob", 
    labelInBackground: false, 
    icon: 'img/rsz_active-job-pin.png', 
    map: map 
    }); 
+0

嗯,我的市場對面的PHP腳本返回查詢加載和我加$ scope.id。在數據庫中放置id對象,座標(lat,lng)。 –

+0

最新的問題?我無法理解。 –

+0

非常感謝!但我意識到這一點(更新後)。我知道這是一條曲線,也許不合邏輯,但它起作用))也許你有想法如何做得更好?) –

0

這是因爲你使用你的位置爲中心的地圖,還創建了多個標記。
創建你想爲中心的地圖的緯度和經度的變量,並使用它像這樣:

var mapCenter = new google.maps.LatLng(latitude, longitude); 
var mapOptions = { 
    center: mapCenter, 
    zoom: 15, 
    mapTypeId: google.maps.MapTypeId.ROADMAP 
}; 
相關問題