2011-11-15 11 views
6

Estoy construyendo una aplicación C#/Winforms que requiere un mapa (como Google maps, Bing maps, etc.). Pero estoy terriblemente confundida por el ToU (licencias) - el uso no comercial, etc.Mapas con la aplicación Windows Forms

Mis preguntas:

  1. Qué proveedor de mapeo sugeriría usted (preferiblemente libre) para empotrar con una aplicación de Windows Forms, por propósitos comerciales.

  2. Qué proveedor de mapas recomendaría si la aplicación está "fuera de línea", es decir, no puede obtener teselas de un servidor de mapas.

  3. Google Earth parecía bastante prometedor hasta que leí en la cláusula ToU de uso no comercial, ¿sabría usted si eso es renunciable mediante la compra de una licencia? ¿Alguna alternativa comercial?

Respuesta

6
  1. Para la aplicación de Windows, intente buscar OpenStreetMap para Windows forma de integración usando un control de explorador

  2. Para la solución en línea que se requieren datos de los mapas. Uno de los formatos de datos de mapas más utilizados es Shapefiles, que es un estándar de ESRI, puede descargar datos de OpenStreetMap y convertirlos a Shapefiles y luego puede importarlos en su aplicación. Hay proyectos de código abierto que utilizan Shapefiles para la representación de mapas y otras funcionalidades GIS. a saber SharpMap y DotSpatial (Tanto aplicación son .Net)

  3. Puede buscar Google Earth Pro, también tratar de World Wind de la NASA (que es gratuito)

+0

También he escrito un post al respecto: https://habiboncoding.wordpress.com/2015/04/ 24/offline-mapping-in-windows-applications-using-c / – Habib

0

Pruebe este código mediante el control del explorador Web este código para obtener la dirección entre dos ubicación

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()); 
Cuestiones relacionadas