2015-10-20 7 views
7

この小さな地図アプリケーションを作成しましたHEREこれはあなたの現在の地域を示していますが、現在の場所にはマーカーが表示されません。 CTRL+Uあなたはマーカーのためのコードがあることがわかります。私は私の現在の場所にlatlonの値をハードコーディングした場合初めに角度アプリケーションのマップマーカーを更新するには

<openlayers ol-center="center" height="400px"> 
      <ol-marker lat="center.lat" lon="center.lon" message="Your current location." ng-model="center" > 
      </ol-marker> 
</openlayers> 

lat="center.lat"lon="center.lon"今、0で、ofcourseのマーカーがで表示されます私の現在の場所、しかし私はどのように更新する値は動的ですか?

私は、どのように私は動的にマーカーを更新しない、私の質問を繰り返して、angular.jsopenLayers3openlayers-angular-directiveを使用していますか?

+0

var getMarkerDefaults = function(){return {projection: 'EPSG:4326'、lat:0、lon:0、coord:[]、show:true、showOnMouseOver: false、showOnMouseClick:false、keepOneOverlayVisible:false}; }; 'latとlonは、openlayers-directive.jsのソースで、634行目にあります。ここでは、purplefront.net/a-map/js/angular-openlayers-directive.js –

答えて

2

setTimeoutの代わりに$timeoutを使用してください。 AngularはsetTimeout内のスコープを変更しているためにビューを更新しないことを知りません。

$timeoutは内部でsetTimeout()を使用しますが、角度実行をダイジェストにするには$apply()も呼び出します。お使いのコントローラであなたのセンターオブジェクトに:

も必要なのは「真の自動検出」を追加することで、コントローラ

+0

を試してみます。setTimeoutはちょうどテストのために、私は解決策がうまくいかないと思っていますが、マーカーHTMLがinspect要素の部分でどのように変更されているかを見てください。http://purplefront.net/a-map/ –

+0

私はそのリンクのコードを掘り下げませんでした。少なくとも私の場所にズームしました – charlietfl

+0

はい、マーカーはあなたの現在の位置に自分自身を調整したい! –

3

でそれを注入するrememeber。

指示のdocumentationで説明されているように。

はまた、あなたがマーカーにバインドされた値を配置する必要があります。

<openlayers ol-center="center" height="400px"> 
     <ol-marker lat="{{center.lat}}" lon="{{center.lon}}" message="Your current location." ng-model="center" > 
     </ol-marker> 

+0

正確に場所を発見して、場所にマーカーを追加しないで、私は角度googleマップと角度リーフレットを使用して幸運を得ました! "autodiscover:true" 'をすでに設定していて、その部分はうまく動作します。 –

+0

こんにちは、回答を更新しました。マーカーはスコープから値を取得する必要がありますので、{{}}で伝える必要があります。 – pedromarce

+0

私は本当にあなたのソリューションがうまくいくと教えてくれましたが、それはできませんでした:(:/私は解決策を見つけました、そのhttp://tombatossals.github.io/angular-openlayers-directive/examples/063-markers-properties -example.html、 'ol-marker-properties =" center "'属性:+1を使用する必要がありますが、 –

1

あなたは角度JSにマップで動作するようにコードを

<ol-marker ol-marker-properties="center" ></ol-marker> 

angular.extend($scope, { 
      center: { 
       lat: 0, 
       lon: 0, 
       autodiscover: true 
       label: { 
        message: 'Your current location.', 
        show: true, 
        showOnMouseOver: true 
       } 
      } 
     }); 
+0

は動作しませんでした! –

+0

それは私のために働いている! – raj

+1

あなたはフィドルやプランナーを共有できますか? –

関連する問題