2011-11-15 23 views
6

Buduję aplikację C#/WinForm, która wymaga mapy (mapy Google, mapy Bing itp.). Ale jestem strasznie zdezorientowany przez tou (licencji) - użycie niekomercyjne itpMapy z aplikacją Windows Forms

Moje pytania:

  1. Co mapowanie dostawca proponujesz (najlepiej za darmo) do umieszczenia w aplikacji WinForm, dla komercyjne cele.

  2. Jaki dostawca map zaleca się, jeśli aplikacja jest "offline", tj. Nie może pobierać kafelków z serwera mapującego.

  3. Google Earth wydawało się całkiem obiecujące, dopóki nie przeczytam w ToU klauzuli o użytkowaniu niekomercyjnym, czy wiesz, czy można to zrobić, kupując licencję? Jakieś komercyjne alternatywy?

Odpowiedz

6
  1. Dla aplikacji Windows, spróbuj poszukać OpenStreetMap dla postaci okien integracji przy użyciu formantu przeglądarki

  2. w trybie offline rozwiązanie będzie wymagać danych mapowych. Jednym z najczęściej używanych formatów map jest Shapefiles, który jest standardem ESRI, możesz pobrać dane OpenStreetMap i przekonwertować je do Shapefiles, a następnie możesz zaimportować je do swojej aplikacji. Istnieje projekt open source, który wykorzystuje Shapefiles do renderowania map i innych funkcji GIS. mianowicie SharpMap i DotSpatial (Zarówno realizacja są .Net)

  3. Można wyszukiwać Google Earth Pro, a także spróbować World Wind z NASA (który jest wolny)

+0

Mam również napisał na blogu o tym: https://habiboncoding.wordpress.com/2015/04/ 24/mapowanie w trybie offline-w-windows-aplikacje-using-c / – Habib

0

Spróbuj ten kod za pomocą programu Control przeglądarka internetowa ten kod, aby uzyskać kierunek między dwoma lokalizacji

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()); 
Powiązane problemy