2016-07-12 1 views
0

私はマップを表示するために(すごい)角度 - ui:角度 - googleマップを使用しています。前のコーダーでいくつかのことを修正しなければならないが、ほとんどそれはかなり素晴らしい。マップを移動したときにマップマーカーを再配置する角度マップを避けるより良い方法はありますか?

解決策が簡単であるように思えるので、私は迷惑をかけることがあります。このには、を使用することができます。

私にはオブジェクトがあります。ほとんどのデータ構造は無関係ですが、ジオロケーションが付属しています。私は簡潔にするためにいくつかのことをスキップマップ(...

<ui-gmap-google-map center='ctrl.object.location'> 
    <ui-gmap-marker coords ='ctrl.object.location'> 
    </uigmap-marker> 
</ui-gmap-google-map> 

すべてが素晴らしいルックスを設定するとき、私はマップを移動しようとするので。その後、...マーカーは、マップの移動に伴って中央にとどまります。角度のあるGoogleマップでは、地図の移動に合わせてオブジェクトの座標が更新されます。その結果、マーカーは同じオブジェクトのコピーではなく参照の両方に移動します。

'これは、私は可能な限りキャッシュされた値を返す小さな関数を書いています。オブジェクトにそのキャッシュされた値がなければ新しい値を返します。これにはより良いアプローチが必要です!

+0

あなたは 'あなたの座標での、属性モデルの場所' angular.copy(ctrl.object.location)のコピーをドラッグまたはポイントを無効にすることができます。 –

答えて

1

マップセンターとマーカーに同じオブジェクト参照を使用しているという問題があります。

は、このようにあなたが内部をマッピングドラッグすると、中心としてオブジェクトの座標を更新しているが、それはそうマーカーがちょうどcenter

this.mapCenter = angular.copy(this.object.location); 
用に別のオブジェクトを作る中央

に滞在しているマーカーとしても使用されています

ビュー

<ui-gmap-google-map center='ctrl.mapCenter'> 
    <ui-gmap-marker coords ='ctrl.object.location'> 
    </uigmap-marker> 
</ui-gmap-google-map> 
+0

私は_problem_を理解しています。あなたは私が思いついた正確な解決策を反復しています。問題は、アドレスのコピーをキャッシュするよりも優れた解決策を見つけることでした。それは私が方法でそれをしなければならないので、せいぜい、クールジーです。 (ベースオブジェクトは反応的に更新されます) – RonLugge

+0

2つの異なるユースケースに対して同じオブジェクトを使用するときに、よりクールジーである理由がわかりません – charlietfl

+0

私たちには通信の故障があると思います。それがどこであるかわからない。ソリューションの私のバージョンは、単純にFoo.locationを取得し、Foo.locationCacheにキャッシュして2番目のコピーを提供することです。 locationCacheが存在する場合は、それを使用します。それ以外の場合は、*を設定してからそれを返します。 – RonLugge

関連する問題