2013-04-03 24 views
6

Sto tentando di utilizzare l'API REST di Nokia Here Maps in OpenLayers ma non riesco a scoprire come.puoi usare nokia qui API mappa REST in openlayer?

  1. È possibile utilizzare Nokia Here Maps in OpenLayers?
  2. Nokia Here Maps supporto TMS?

Qualcuno sa come utilizzare Nokia Maps di OpenLayers o OpenScales?

risposta

6

Anche se questo è tecnicamente possibile, a meno che non siete molto attenti, è altamente probabile cadere fallo del qui Maps Location Services Terms and Conditions - in particolare le due clausole di seguito:

5 RESTRIZIONI

(ii) Non sarà possibile ricomporre più immagini statiche della mappa per visualizzare una mappa che> è maggiore di quella consentita nella documentazione di Location Platform Services;

sottosezione 5 (ii) si vieta l'uso del RESTful Map API entro Open Layers poiché vi sarà effettivamente in affiancamento Mappa Immagini insieme.

(iv) Lei non rimuovere o oscurare i diritti d'autore o marchio accorge o altri avvisi simili o marcature o leggende dalla posizione Platform Services se comunicazioni tali, marcature, leggende o altri marchio provengono da NAVTEQ o una terza parte;

sottosezione 5 (iv) è stato progettato per impedire a qualcuno utilizzando i dati delle mappe, senza la corretta attribuzione in quanto Nokia si è tenuto per visualizzare i diritti d'autore sulle sue mappe in cui i dati della mappa è stata acquistata presso terzi.

Il modo più semplice per evitare questo problema sarebbe utilizzare lo HERE Map API for JavaScript, che è pubblicamente disponibile sul piano di base e già visualizza correttamente tutte le informazioni sul copyright necessarie.

Se siete determinati a utilizzare i livelli di Open per visualizzare le mappe di Nokia, si avrebbe bisogno di utilizzare direttamente il servizio Map Piastrelle di Nokia (Il Servizio Mappa Tile fa supporto TMS) - Tuttavia, questo è il servizio è disponibile solo per i clienti aziendali . Per accedere a questo si avrebbe bisogno di:

  1. "Richiesta di un pacchetto personalizzato con più funzioni" dal Pricing plans page - è sufficiente fare clic sul pulsante "Contattaci".
  2. Si potrebbe quindi derivare uno strato OpenLayers.Layer.XYZ come illustrato nel frammento di codice qui sotto:

(Avrete bisogno di utilizzare l'URL corretto, APP_ID e Token ovviamente)

var map = new OpenLayers.Map({ 
    div: "map", 
    projection: "EPSG:900913", 
    layers: [ 
     new OpenLayers.Layer.XYZ(
      "HereMap", 
      [ 
       "MAP_TILE_BASE_URL/${z}/${x}/${y}/256/png8?lg=ENG&app_id=YOUR_APP_ID&token=YOUR_TOKEN" 
      ], 
      { 
       attribution: "&copy; 2013 Nokia</span>&nbsp;<a href='http://maps.nokia.com/services/terms' target='_blank' title='Terms of Use' style='color:#333;text-decoration: underline;'>Terms of Use</a></div> <img src='http://api.maps.nokia.com/2.2.4/assets/ovi/mapsapi/by_here.png' border='0'>", 
       transitionEffect: "resize" 
      } 
     ) 
    ], 
    center: [0, 0], 
    zoom: 1 
}); 

map.addControl(new OpenLayers.Control.LayerSwitcher()); 

Questo ancora non è necessariamente conforme a 5 (iv), tuttavia, poiché il testo corretto per l'attribuzione dei diritti d'autore dovrà essere ottenuto dal server in fase di esecuzione.

+0

Sto cercando di usare il TMS, ma non riesce a trovare il modo. Sto provando a testare il piano base ora. – Jack

+0

Dove posso trovare alcuni esempi di TMS per l'utilizzo della mappa Nokia. – Jack

+0

@CaoLu Il piano di base non include il servizio Tile Tile: sarà ** necessario un piano aziendale. Utilizza il link ** Contattaci ** come spiegato sopra per ottenere l'accesso. Per quanto riguarda l'accettabilità dell'uso di Open Layers all'interno dei T & C, questa è una decisione commerciale. La risposta più semplice sarebbe utilizzare la [API JavaScript] (http://developer.here.com/javascript_api) –

1

1 Sì, è possibile utilizzarlo con OpenLayers.Come già notato in risposta a Jason Fox, avrai bisogno di un ID applicazione e un token. Proprio come Gmaps 2 usato per richiedere.

Quello che sto cercando di fare è creare un nuovo layer che estenda OpenLayers.Layer.EventPane per allegare le mappe di Here all'interno del suo elemento dom. Questo è molto simile a OpenLayers.Layer.Google che proviene da dove ho afferrato le idee.

2 Sì. Ha questa classe provider nokia.maps.map.provider.ImgTileProvide.

anche i seguenti prove dimostrano che le mappe di base sono instanceof TileProvider:

alert('' + (nokia.maps.map.Display.NORMAL instanceof nokia.maps.map.provider.ImgTileProvider));