2017-06-01 148 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 
}; 
相关问题