2017-03-28 5 views
-1

ジオフェンシングのコードがあります。そのポリゴンシェイプがポリゴンの側からポリゴンをドラッグしながら警告しますが、手動で外部にドラッグするのではなく、ページが読み込まれると自動的にマーカがGoogleマップのポリゴンジオフェンスの外側にあるときにアラートがジオフェンシングに表示されない

<head> 
    <meta charset="utf-8"> 
    <title>GMaps.js &mdash; Geofences</title> 
    <script type="text/javascript" 
      src="https://maps.googleapis.com/maps/api/js?sensor=true&key=AIzaSyDci4vYApOxVdKqwlpXSv9h77AcWbNuzmQ&libraries=drawing"> 
    </script> <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js"></script> 
    <script src="../gmaps.js"></script> 
    <link rel="stylesheet" href="http://twitter.github.com/bootstrap/1.3.0/bootstrap.min.css" /> 
    <link rel="stylesheet" type="text/css" href="examples.css" /> 
</head> 
    <body onload="runMaps()"> 
     <script> 

      var map; 

      $(document).ready(function() { 
       map = new GMaps({ 
        el: '#map', 
        lat: -12.043333, 
        lng: -77.028333 
       }); 
       var path = [ 
         [-12.040397656836609, -77.03373871559225], 
         [-12.040248585302038, -77.03993927003302], 
         [-12.050047116528843, -77.02448169303511], 
         [-12.044804866577001, -77.02154422636042] 
       ]; 
       var drawingManager = new google.maps.drawing.DrawingManager({ 
        drawingMode: google.maps.drawing.OverlayType.MARKER, 
        drawingControl: true, 
        drawingControlOptions: { 
         position: google.maps.ControlPosition.TOP_CENTER, 
         drawingModes: ['marker', 'circle', 'polygon', 'polyline', 'rectangle'] 
        }, 
        markerOptions: { icon: 'https://developers.google.com/maps/documentation/javascript/examples/full/images/beachflag.png' }, 
        circleOptions: { 
         fillColor: '#ffff00', 
         fillOpacity: 1, 
         strokeWeight: 5, 
         clickable: false, 
         editable: true, 
         zIndex: 1 
        } 
       }); 
       drawingManager.setMap(map); 


       polygon = map.drawPolygon({ 
        paths: path, 
        strokeColor: '#BBD8E9', 
        strokeOpacity: 1, 
        strokeWeight: 3, 
        fillColor: '#BBD8E9', 
        fillOpacity: 0.6 
       }); 
       map.addMarker({ 
        lat: -12.043333, 
        lng: -77.028333, 
        draggable: true, 
        fences: [polygon], 
        outside: function (marker, fence) { 
         alert('This marker has been moved outside of its fence'); 
        } 
       }); 
       map.addMarker({ 
        lat: -12.041111, 
        lng: -77.021111, 
        draggable: true, 
        fences: [polygon], 
        outside: function (marker, fence) { 
         alert('This marker has been moved outside of its fence'); 
        } 
       }); 
      }); 

     </script> 
     <div id="map" style="height:800px"></div> 
    </body> 
+1

Google Maps APIを読み込むときには、 'sensor'パラメータは必要ありません。 – duncan

答えて

0

コードは、私は、これはそれを行うべきだと思います。すべてのGmaps.jsは、ボンネットの下にやっていることはそう変数にあなたのマーカーを割り当てる

if (marker.fences) { 
    google.maps.event.addListener(marker, 'dragend', function() { 
     self.checkMarkerGeofence(marker, function(m, f) { 
     outside(m, f); 
     }); 
    }); 
} 

https://github.com/hpneo/gmaps/blob/master/gmaps.js#L851

です。読み込み時に、それぞれの上で 'dragend'イベントをトリガーします。

var marker1 = map.addMarker({ 
    lat: -12.043333, 
    lng: -77.028333, 
    draggable: true, 
    fences: [polygon], 
    outside: function (marker, fence) { 
     alert('This marker has been moved outside of its fence'); 
    } 
}); 

var marker2 = map.addMarker({ 
    lat: -12.041111, 
    lng: -77.021111, 
    draggable: true, 
    fences: [polygon], 
    outside: function (marker, fence) { 
     alert('This marker has been moved outside of its fence'); 
    } 
}); 

google.maps.event.trigger(marker1, 'dragend'); 
google.maps.event.trigger(marker2, 'dragend'); 
+0

私はURコードを試しましたが、以前と同じ結果を得ています。ページの読み込み時に、マーカーがフェンス内または外にあることを検出する必要があります。外に出たら警告を発するべきですが、そのようなことは起こりません。 http://plnkr.co/edit/ObAzjKjy10xRuhsvuvwH?p=preview –

+0

コードにエラーがあります。ブラウザのコンソールを確認してください。 – duncan

関連する問題