私のアプリにaurelia skeleton typescript webpackテンプレートを使用しています。 私はページにBingMapsを追加し、画鋲などを追加することができるようにしたい これまでのところ、私はこれをやった:AureliaでBingMapsを使用する方法
:map.html
index.html - I added a script tag that loads the map from CDN
<head>
...
<script type='text/javascript' src='http://www.bing.com/api/maps/mapcontrol'></script>
</head>
は、その後、私はこのようなテンプレートを追加しました
<template>
<div id='mainMap' style='width: 100vw; height: 100vh;'></div>
</template>
、私はマップコントローラを持っている:
map.ts
export class Map {
private map: Microsoft.Map.Map;
attached() {
this.map = new Microsoft.Maps.Map('mainMap', { credentials:'mycredentials - omitted'});
...
}
}
ここで、アプリケーションを開始すると、(スケルトンからの)ウェルカムが表示されます。次に、[地図]メニューのリンクをクリックすると、マップページが完全にロードされた状態で表示されます。 しかし、私はマップはもう表示されていないとエラーがコンソールに表示されているブラウザ(F5またはCtrl + F5)でリフレッシュをクリックした場合:
bluebird.js:1546 Unhandled rejection TypeError: Cannot read property 'prototype' of null at k (https://www.bing.com/mapspreview/sdk/mapcontrol:11:7096) at h (https://www.bing.com/mapspreview/sdk/mapcontrol:11:6285) at e (https://www.bing.com/mapspreview/sdk/mapcontrol:11:1106) at t.l [as instance] (https://www.bing.com/mapspreview/sdk/mapcontrol:11:161) at h (https://www.bing.com/mapspreview/sdk/mapcontrol:11:6042) at e (https://www.bing.com/mapspreview/sdk/mapcontrol:11:1106) at t.l [as instance] (https://www.bing.com/mapspreview/sdk/mapcontrol:11:161) at new Microsoft.Maps.Map (https://www.bing.com/mapspreview/sdk/mapcontrol:13:4304) at Map.attached (http://localhost:9000/app.bundle.js:31267:20) at Controller.attached (http://localhost:9000/aurelia.bundle.js:6438:22) at View.attached (http://localhost:9000/aurelia.bundle.js:4524:23) at ViewSlot.attached (http://localhost:9000/aurelia.bundle.js:4883:13) at View.attached (http://localhost:9000/aurelia.bundle.js:4534:19) at ViewSlot.attached (http://localhost:9000/aurelia.bundle.js:4883:13) at http://localhost:9000/aurelia.bundle.js:14717:28
Mapオブジェクトをインスタンス化しようとしているときに、このエラーがスローされますマップコントローラーのAttachedイベントに追加します。
なぜこれが起こっているのですか?これをどのように解決できますか? あなたは外部スクリプトが完全に読み込まれる前にマップをインスタンス化しようとしているためです
おかげ
これは素晴らしい解決策のように見え、私の解決策よりも再利用可能です。これは素晴らしいAureliaのアプローチです! @ルカ、私はあなたがこの方法を試してくださいと思います。 – LStarky
ありがとう@LStarky!あなたが投稿したソリューションについて悪いことを言うつもりではなかったことを知っているだけで、私はまだタイミング問題に苦しんでいることを指摘していました。タイミングの問題を理解するまでにはしばらく時間がかかりました。 :-) –
私の答えでは、開発者が複数のマップをページに配置したい場合や、アプリ内の別の場所でマップを使用したい場合でも動作するものを得ることが重要でした。しかし、人、私は突然変異の観察者と狂ったルートを下ったのですか?しかし、ねえ、私はそのAPIを使って作業する方法を学んだので、時間の無駄ではありませんでした:-) –