2011-11-15 19 views
6

Sto costruendo un'applicazione C#/Winforms che richiede una mappa (a la Google maps, mappe Bing ecc.). Ma io sono terribilmente confusa dal ToU (licenze) - uso non commerciale eccMappe con applicazione Windows Form

Le mie domande:

  1. Quale fornitore di mappatura suggerirebbe (preferibilmente gratuito) per incorporare con un'applicazione WinForms, per motivi commerciali.

  2. Quale fornitore di mappe suggerirebbe se l'app fosse "offline", vale a dire che non è possibile ottenere le tessere da un server di mapping.

  3. Google Earth è sembrato piuttosto promettente fino a quando ho letto nel ToU della clausola di uso non commerciale solo, sapresti se è possibile rinunciare all'acquisto di una licenza? Qualche alternativa commerciale?

risposta

6
  1. Per l'applicazione di Windows, prova a cercare OpenStreetMap per le finestre di integrazione modulo utilizzando un controllo browser

  2. Per la soluzione non in linea si richiede dati della mappa. Uno dei formati di dati di mappa più utilizzati è Shapefiles, che è uno standard ESRI, è possibile scaricare dati OpenStreetMap e convertirlo in Shapefiles e quindi importarli nella propria applicazione. Esistono progetti open source che utilizzano Shapefile per il rendering della mappa e altre funzionalità GIS. vale a dire SharpMap e DotSpatial (entrambi implementazione sono .Net)

  3. È possibile cercare Google Earth Pro, provare anche World Wind della NASA (che è gratuito)

+0

Ho anche scritto un post su di esso: https://habiboncoding.wordpress.com/2015/04/ 24/windows-applicazioni offline-mapping-in--con-c / – Habib

0

provare questo codice Utilizzando il controllo del browser Web questo codice per ottenere direzione tra due posizione

System.Text.StringBuilder queryaddress = new System.Text.StringBuilder(); 
string sStreet = string.Empty; 
string sCity = string.Empty; 
string sState = string.Empty; 
string sPincode = string.Empty; 
string sProvider_no = string.Empty; 
queryaddress.Append("https://www.google.com/maps/dir/"); 

if (!string.IsNullOrEmpty(txtprovider_no.Text)) { 
    sProvider_no = txtprovider_no.Text.Replace(" ", "+"); 
    queryaddress.Append(sProvider_no + "," + "+"); 
} 
if (!string.IsNullOrEmpty(txtState.Text)) { 
    sState = txtState.Text.Replace(" ", "+"); 
    queryaddress.Append(sState + "," + "+"); 
} 
if (!string.IsNullOrEmpty(txtCity.Text)) { 
    sCity = txtCity.Text.Replace(" ", "+"); 
    queryaddress.Append(sCity + "," + "+"); 
} 
if (!string.IsNullOrEmpty(txtPincode.Text)) { 
    sPincode = txtPincode.Text.Replace(" ", "+"); 
    queryaddress.Append(sPincode); 
} 

queryaddress.Append("/"); 
sStreet = string.Empty; 
sCity = string.Empty; 
sState = string.Empty; 
sPincode = string.Empty; 
if (!string.IsNullOrEmpty(txtlindmark.Text)) { 
    sStreet = txtlindmark.Text.Replace(" ", "+"); 
    queryaddress.Append(sStreet + "," + "+"); 
} 
if (!string.IsNullOrEmpty(txtclient_city.Text)) { 
    sCity = txtclient_city.Text.Replace(" ", "+"); 
    queryaddress.Append(sCity + "," + "+"); 
} 
if (!string.IsNullOrEmpty(ttxtclient_city.Text)) { 
    sPincode = ttxtclient_city.Text.Replace(" ", "+"); 
    queryaddress.Append(sPincode); 
} 
if (!string.IsNullOrEmpty(txtclient_state.Text)) { 
    sState = txtclient_state.Text.Replace(" ", "+"); 
    queryaddress.Append(sState + "," + "+"); 
} 


WBR.Navigate(queryaddress.ToString()); 
Problemi correlati