2016-02-14 7 views
0

Я разрабатываю приложение Cordova в VisualStudio 2015. Я пытаюсь на одной из страниц добавить модуль BingMaps для отображения специального местоположения на карте. Поэтому я ссылаться на это в моем index.html:Кордова + Бинг-карты + политика безопасности контента

<script type="text/javascript" src="ms-appx:///Bing.Maps.JavaScript//js/veapicore.js"></script> 

И в моем контроллере я использую следующую команду:

Microsoft.Maps.loadModule(
    'Microsoft.Maps.Map', 
    { 
    callback: function() {/*my code here*/} 
    } 
); 

При запуске приложения, у меня есть эта ошибка:

Отказался от загрузки сценария ms-appx: ///Bing.Maps.JavaScript//js/veapicore.js, потому что он нарушает следующую директиву политики безопасности контента: «default-src» self 'data: gap: https://ssl.gstatic.com "небезопасный-Eval». Обратите внимание, что 'script-src' не был явно установлен, поэтому 'default-src' используется в качестве резервной копии.

My Content-Security-Policy является линия по умолчанию, вставляемый Кордова:

<meta http-equiv="Content-Security-Policy" content="default-src 'self' data: gap: https://ssl.gstatic.com 'unsafe-eval'; style-src 'self' 'unsafe-inline'; media-src *"> 

Я пытался изменить (и удалить) эту строку без какого-либо результата.

Если это поможет, я отладки приложения в Ripple

+0

Посмотрите на [Cordova Whitelist Guide] (https://cordova.apache.org/docs/en/5.0.0/guide/appdev/whitelist /) Я думаю, это даст вам некоторое представление о вашей проблеме. – Tim

+0

Я искренне могу (t получить его на работу. Я понимаю, что эта строка устанавливает сильную безопасность для моего приложения, но синтаксис потерял меня. –

+0

BingMaps, похоже, нужно подключиться к _http: //ecn.dev.virtualearth.net_. Поэтому я завершил CSP следующим: 'script-src 'self' http: // ecn.dev.virtualearth.net', но я все еще получаю эти две ошибки: ** Отказался подключиться к 'http: // ecn. dev.virtualearth.net/** и ** Ошибка: не удалось выполнить 'open' в 'XMLHttpRequest': Отказано, чтобы подключиться к 'http: //ecn.dev.virtualearth.net/** (что практически одинаково) –

ответ

0

Так что я, наконец отказался от Bing, и использовать GoogleMaps вместо этого. И, честно говоря, он работает как прелесть с первой попытки! Так много для использования инструментов Microsoft ...

Во всяком случае ...

Во-первых, чтобы загрузить Gogle API в index.html:

<script src="http://maps.googleapis.com/maps/api/js"></script> 

Затем в контроллере, добавить API-интерфейс GoogleMaps в контейнере (и добавление штифта к центру, если это необходимо:

var tmpMap = new google.maps.Map(document.getElementById('myContainer'), { 
    center: { 
     lat: parseFloat($scope.lat), 
     lng: parseFloat($scope.long) 
    }, 
    zoom: 12, 
    mapTypeId: google.maps.MapTypeId.ROADMAP 
}); 

var tmpMarker = new window.google.maps.Marker({ 
    position: tmpMap.getCenter(), 
    map: tmpMap, 
    title: 'My Title' 
}); 

Затем, установив размер в контейнер (в отличие от BingMap s, Google не изменяет размер контейнера. Поэтому без размера вы ничего не сможете увидеть)

Окончательный вариант, установите CSP для принятия кода с googleapi.com/* В этом примере, Il открыл ПСУ ко всему, что не очень хорошая вещь, чтобы сделать на реальном приложении:

<meta http-equiv="Content-Security-Policy" content="default-src *; style-src * 'unsafe-inline'; script-src *"> 

И вуаля!

Google любовь, Google жизнь :)

Смежные вопросы