2016-06-21 33 views
1

我正面臨ui傳單插件中的圓圈標記問題。當有人點擊一個圓圈即時獲得彈出窗口,但如果我點擊地圖圓圈外,然後再次嘗試點擊圓圈,彈出窗口不會出現。Popups無法正常使用圓圈標記

請問可以提出什麼問題?有沒有解決這個問題的方法?

步驟來重現

  1. 在地圖上點擊一個圓圈標記
  2. 移動圓圈標記出的地圖範圍
  3. 然後嘗試一下其他任何標記彈出不會出現
  4. 如果我點擊了圈子外面,再次點擊圈子彈出再次出現

下面是c的片段ODE如果你需要完整的代碼,請訪問此GitHub的鏈接

https://github.com/Umamaheswaran1990/learningleaflet

enter image description here

HTML

<!DOCTYPE html> 
<html ng-app="demoapp"> 
<head> 
    <meta name="viewport" content="width=device-width, initial-scale=1.0"> 
    <script src="../bower_components/angular/angular.min.js"></script> 
    <script src="../bower_components/leaflet/dist/leaflet.js"></script> 
    <script src="../bower_components/angular-simple-logger/dist/angular-simple-logger.js"></script> 
    <script src="../bower_components/ui-leaflet/dist/ui-leaflet.min.js"></script> 
    <link rel="stylesheet" href="../bower_components/leaflet/dist/leaflet.css" /> 
    <script src="app.js"></script> 
</head> 
<body ng-controller="LayersSimpleController as vm"> 
    <leaflet center="center" tiles="tiles" paths="paths" width="50%" height="480px"></leaflet> 
</body> 
</html> 

JS

var app = angular.module("demoapp", ['ui-leaflet']); 
app.controller("LayersSimpleController", ["$scope", function ($scope) { 
    var vm = this; 

    $scope.$on('leafletDirectiveMap.map.load', function (event, data) { 
     var map = data.leafletObject; 
     map.attributionControl.setPrefix(false); 
    }); 

    $scope.$on('leafletDirectiveMap.moveend', function (event, data) { 
     activate(); 
    }); 

    var map = [ 
     { "lat": 30.7559, "lon": -96.489 }, 
     { "lat": 41.8887, "lon": -111.769 }]; 

    angular.extend($scope, { 
     center: { 
      lat: 39.774769, 
      lng: -98.789062, 
      zoom: 4, 
      minZoom: 4, 
      zoomControl: true, 
     }, 
     events: {}, 
     tiles: { 
      url: 'http://{s}.basemaps.cartocdn.com/light_all/{z}/{x}/{y}.png', 
      options: { 
       subdomains: ['otile1', 'otile2', 'otile3', 'otile4'] 
      }, 
      layers: {}, 
      defaults: { 

      } 
     } 
    }); 

    activate(); 

    function activate() { 
     $scope.paths = {}; 
     angular.forEach(map, function (value, key) { 
      if (value.lat !== null && value.lon !== null) { 
       $scope.paths['circle' + key] = { 
        type: 'circleMarker', 
        className: 'testClass', 
        fillColor: 'DarkSlateGray', 
        color: '#000000', 
        weight: 0, 
        opacity: 1, 
        message: 'This is a test marker', 
        fillOpacity: 0.8, 
        stroke: false, 
        clickable: true, 
        latlngs: [parseFloat(value.lat), parseFloat(value.lon)], 
        radius: 20 
       }; 
      } 
     }); 
    } 
}]); 
+0

你在兩個瀏覽器都試過了嗎?我的意思是兩個瀏覽器都存在這個問題嗎? –

+0

@pdfarhad我能夠在chrome和forefox中重現該問題令人驚訝的是,這在Edge瀏覽器中可用 – Umamaheswaran

回答