Использование Enterprise Edition Here Maps изнутри Salesforce

Всем доброе утро,

Меня зовут Дэнни, я системный администратор Salesforce и (очень) младший разработчик, который в настоящее время пытается интегрировать карты HERE от Nokia в нашу систему, поскольку их варианты общественного транспорта значительно превосходят карты Google. Это делается в Salesforce с помощью Visualforce. Мне удалось использовать наш идентификатор предприятия и ключ для вызова и отображения маршрута на динамической карте, но у меня возникли проблемы с геокодированием. У меня возникли проблемы с элементом ниже:

<head>
<script type="text/javascript" charset="UTF-8" src="https://js.cit.api.here.com/ee/2.5.3/jsl.js?with=maps,positioning,places,directions"></script>
<style type="text/css">
html {
overflow:hidden;
}

body {
margin: 0;
padding: 0;
position: absolute;
overflow:hidden;
width: 100%;
height: 100%;
}

#mapContainer {
width: 60%;
height: 95%;
left: 0;
top: 10px;
position: absolute;
}
</style>
</head>

<body>
<div id="mapContainer"></div>
<script type="text/javascript" charset="UTF-8" src="https://js.cit.api.here.com/ee/2.5.3/jsl.js?with=maps,positioning,places,directions"></script>
<script type="text/javascript"> 
nokia.Settings.set("app_id", "V6tmpXy6GHXqJWlaPVmh");
nokia.Settings.set("app_code", "XS4Tjj82QznkWAJJu0L3-g");
nokia.Settings.set("serviceMode", "cit");
(document.location.protocol == "https:") && nokia.Settings.set("secureConnection", "force");
var map = new nokia.maps.map.Display(
document.getElementById("mapContainer"), {
components: [
        new nokia.maps.map.component.ZoomBar(), 
        new nokia.maps.map.component.Behavior(),
        new nokia.maps.map.component.TypeSelector(),
        new nokia.maps.map.component.ScaleBar(),
        new nokia.maps.map.component.ContextMenu(),
    ],
});

var modes = [{
type: "fastest",
transportModes: ["car"],
trafficMode: "disabled"
}];

// GeoCode
nokia.places.search.manager.geoCode({
   searchTerm : "{!Transport_order__c.From_Address__c}",
  onComplete: onGeocodeComplete
  });

// Post GeoCode
function onGeocodeComplete(data, requestStatus) {
  var marker;
  if (requestStatus === 'OK') {
    alert('GEOCODE ENDED SUCCESSFULLY');
    marker = new nokia.maps.map.StandardMarker(data.location.position);
    map.objects.add(marker);
    map.zoomTo(marker.getBoundingBox(), false);
    if (map.get('zoomLevel') > 15) {
      map.setZoomLevel(15);
    }
  } else if (requestStatus === 'ERROR') {
    alert('GEOCODE FAILED.');
  }
}

</script>
</body>

Я прочитал из сообщения на этом сайте, что версия Enterprise рассматривает nokia.places.search и т. Д. Как экземпляр, а не функцию, которую нужно вызвать. Это имеет смысл, поскольку изменение URL-адреса на SE, а не на EE, похоже, заставляет запрос геокодирования работать нормально, однако наша внутренняя система отклоняет ответ, поскольку он не в HTTPS (который может быть принудительно включен с помощью Enterprise).
Проблема, с которой я столкнулся, заключается в том, что я недостаточно знаком с Java, чтобы по-настоящему понять, в чем разница, или, скорее, я не знаю, что делать с вызовом экземпляра. В настоящее время консоль java в Chrome сообщает мне, что поиск - это ошибка неопределенного типа, что бесполезно, и я не могу найти никаких дополнительных указаний в любом месте, где ищу! Может ли кто-нибудь помочь мне разграничить руководство по этому вопросу между корпоративным и стандартным?

Спасибо!


person Danny Wareing    schedule 27.03.2014    source источник


Ответы (1)


Проблема здесь в том, что доступны два API JavaScript, и в вашем случае вам нужно использовать Enterprise Maps JS API, а не общедоступный Maps JS API. Геокодирование в Enterprise Maps JS API (nokia.search.Manager) отличается от публичного предложения и более гибкое. Подпись геокодирования в общедоступном Maps JS API (nokia.places.search.manager) является частью предлагаемых мест и имеет более ограниченный характер.

  • Как корпоративный заказчик, единственная документация вам понадобится (простите за каламбур) ЗДЕСЬ
  • Соответствующий набор примеров можно найти в Enterprise Explorer
  • Пример геокодирования с использованием Enterprise Maps JS API можно найти ЗДЕСЬ, посмотрите на код и обратите внимание, что он использует nokia.search.Manager()
  • В настоящее время Truck Routing доступен только в корпоративном API маршрутизации 6.2, тогда как Public Транспортная маршрутизация доступна только в API маршрутизации 7.2. Это означает, что для использования общественного транспорта с Enterprise Maps JS API вам потребуется nokia.maps.advrouting.Manager и обратиться в соответствующую службу отдыха. Пример этого можно найти в примерах сообщества
person Jason Fox    schedule 27.03.2014