Yorumları: 223
Konuları: 50
Kayıt Tarihi: 10-11-2016
Rep Puanı: 268 Acemi
19-05-2023, Saat: 16:55
(Son Düzenleme: 20-05-2023, Saat: 22:39, Düzenleyen: codder71.)
Merhaba Arkadaşlar
Bir projemde Mapview kullanarak belirli bir adresin konumunu bulmak istiyorum. Örneğin Ankara mamak belirtildiği zaman mamak sınırlarını gösteren bir şekilde görüntülemek mümkünmüdür. Araştırma yaptım kordinattan adres bulma var fakat tam tersini nasıl yapabiliriz. Bu konuda çalışması olan arkadaşlardan yardımlarınızı bekliyorum.
Şimdiden teşekkürler dilerim.
Yorumları: 1.898
Konuları: 22
Kayıt Tarihi: 05-08-2016
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 21.184 Üstad
Saygılarımla
Muharrem ARMAN
Yorumları: 223
Konuları: 50
Kayıt Tarihi: 10-11-2016
Rep Puanı: 268 Acemi
(20-05-2023, Saat: 09:26)mrmarman Adlı Kullanıcıdan Alıntı: Bir çıkış noktası için şu DelphiCan linkini incelemek isteyebilirsiniz.
Hocam öncelikle cevabınız için çok teşekkür ederim.
O konuyu inceledim fakat mapview komp. ile yapabilirmiyiz bu işlemi çünkü kullanıcının marker işaretlemesini istiyorum. İşaretlediği marker kordinatlarını alıp db ye kayıt yapmak için kullanacağım.
Aslında yapmak istediğim mesela kullanıcı il ilçe mahalle girişi yaptı. Bu işlemden sonra mapview o konuma odaklanıp bir konum belirlemesini isteyeceğim. Konum işaretlendiğinde ise enlem boylam alıp kayıdını yapacağım.
Bu odaklanma işlemini komponent ile nasıl yapabilirim hocam.
Yorumları: 1.898
Konuları: 22
Kayıt Tarihi: 05-08-2016
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 21.184 Üstad
20-05-2023, Saat: 15:22
(Son Düzenleme: 20-05-2023, Saat: 16:38, Düzenleyen: mrmarman.)
Koordinattan adres bulmak mümkün tabii ki. GPS koordinatı verildiğinde bir süre sonra TGeocoder size adresini döndürür.
Kişi İl İlçe girdiğinde merkez olarak ilgili kaymakamlığı odaklayacak şekilde haritalandırabilirsiniz.
Sonra marker ekleme yapmışsınızdır zaten eklendiğinde TGeocoder dönüşü alıp adresi onaylatır veritabanına kaydedersiniz
EK:
Asıl sorunuz Marker koordinatından nasıl adres alırım idiyse ? Lokasyon aldığınız, lokasyondan adres aldığınız koda ek olarak :
var
var
...
...
LLocation2D : TLocationCoord2D;
LMarker : TMapMarker;
begin
...
...
LLocation2D.Latitude := LMarker.Descriptor.Position.Latitude;
LLocation2D.Longitude := LMarker.Descriptor.Position.Longitude;
// Translate location to address
if Assigned(FGeocoder) and not FGeocoder.Geocoding then
FGeocoder.GeocodeReverse( LLocation2D );
ile aynı OnGeocodeReverseEvent olayında marker ile işaretlediğiniz adres dönecektir.
Saygılarımla
Muharrem ARMAN
Yorumları: 223
Konuları: 50
Kayıt Tarihi: 10-11-2016
Rep Puanı: 268 Acemi
20-05-2023, Saat: 16:51
(Son Düzenleme: 20-05-2023, Saat: 16:53, Düzenleyen: codder71.
Sebep: ekleme
)
(20-05-2023, Saat: 15:22)mrmarman Adlı Kullanıcıdan Alıntı: Koordinattan adres bulmak mümkün tabii ki. GPS koordinatı verildiğinde bir süre sonra TGeocoder size adresini döndürür.
Kişi İl İlçe girdiğinde merkez olarak ilgili kaymakamlığı odaklayacak şekilde haritalandırabilirsiniz.
Sonra marker ekleme yapmışsınızdır zaten eklendiğinde TGeocoder dönüşü alıp adresi onaylatır veritabanına kaydedersiniz
EK:
Asıl sorunuz Marker koordinatından nasıl adres alırım idiyse ? Lokasyon aldığınız, lokasyondan adres aldığınız koda ek olarak :
var
var
...
...
LLocation2D : TLocationCoord2D;
LMarker : TMapMarker;
begin
...
...
LLocation2D.Latitude := LMarker.Descriptor.Position.Latitude;
LLocation2D.Longitude := LMarker.Descriptor.Position.Longitude;
// Translate location to address
if Assigned(FGeocoder) and not FGeocoder.Geocoding then
FGeocoder.GeocodeReverse( LLocation2D );
ile aynı OnGeocodeReverseEvent olayında marker ile işaretlediğiniz adres dönecektir.
Hocam peki şu mümkün mü mesela il ilçe mahalle verisini gönderip haritayı o bölgeye odaklayabilir miyim böyle bir şey mapview ile mümkün mü ?
Bunu yapan bazı uygulamalar gördüm acaba delphi ile de bunu yapabiliyor muyuz mu ?
Hocam zor yoldan denersek illerin kordinatlarını alıp gösterdiğiniz yöntemden odaklayabilirim ama mahalle ilçeler işi karıştırıyor
Yorumları: 1.898
Konuları: 22
Kayıt Tarihi: 05-08-2016
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 21.184 Üstad
20-05-2023, Saat: 17:03
(Son Düzenleme: 20-05-2023, Saat: 19:33, Düzenleyen: mrmarman.)
Yine başa döndük. verdiğim örnek buna ilişkin Google'dan basit bir sorgu ile adresten Lat / Lon koordinatları çekip işe öyle başlayacaksınız.
Haa. ben kurumda Naklen Yayın araçlarının konumlandırılması için benzer bir yapıyı şöyle kurdum. Türkiye İl İlçe GPS koordinat bankası buldum netten, onu veritabanına aldım. İl / İlçe seçince hemen koordinat çıkıyor oradan sonra detaya gidiyorum.
bkz. GithubLinki
Sana şöyle bir test kodu hazırladım. Google Maps'in ne şekilde ilçeyi çevrelediğini inceledim. Koordinatı girip yanında konum adını verdiğinde odaklanıp place adı tutuyorsa sınırlarını çizdiğini gördüm.
En azında il / ilçe bazında koordinat alırsın eğer browse edilirse ilçe'nin etrafının çevrelendiği bir harita da gösterebilirsin.
uses System.Net.HttpClientComponent;
Type
tLocation = record
Latitude, Longitude, LZoom : String;
end;
function GetGeoLoc( aSehir, aIlce: WideString ): tLocation;
const
SearchFormat = 'https://www.google.com/maps/place/%s,%s';
var
aUrl : String;
aClient : TNetHTTPClient;
sResponse : TStringStream;
aSrc : String;
LStat : Integer;
strBlok : String;
begin
Result := default(tLocation);
strBlok := '';
aUrl := Format( SearchFormat, [ aSehir, aIlce ] );
aClient := TNetHTTPClient.Create(nil);
try
aClient.UserAgent := 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36'; // 'Dalvik/2.1.0 (Linux; U; Android 8.0.0; SM-N950F Build/R16NW)';
aClient.Accept := 'text/html';
sResponse := TStringStream.Create( '', TEncoding.UTF8 );
try
LStat := aClient.Get( aUrl, sResponse ).StatusCode;
if LStat = 200 then
begin
sResponse.SaveToFile( ExtractFilePath(paramStr(0)) + 'gelen.html' );
strBlok := sResponse.DataString;
end;
finally
FreeAndNil(sResponse);
end;
// Parse Section
// ------------------------------------------------------------------------ //
aSrc := 'https://www.google.com/maps/preview/place/';
if Pos(aSrc, strBlok) > 0 then
begin
System.Delete( strBlok, 1, Pos(aSrc, strBlok) -1 );
aSrc := '@';
if Pos(aSrc, strBlok) > 0 then
begin
System.Delete( strBlok, 1, Pos(aSrc, strBlok) );
Result.Latitude := Copy(strBlok, 1, Pos(',', strBlok)-1);
System.Delete( strBlok, 1, Pos(',', strBlok) );
Result.Longitude := Copy(strBlok, 1, Pos(',', strBlok)-1);
Result.LZoom := 'z10';
end;
end;
finally
FreeAndNil(aClient);
end;
end;
procedure TForm1.BitBtn1Click(Sender: TObject);
var
LUrl : String;
begin
With GetGeoLoc( Edit1.Text, Edit2.Text ) do
LUrl := Format('https://www.google.com/maps/place/%s,%s/@%s%%2F%s,%s', [Edit1.Text, Edit2.Text, Latitude, Longitude, LZoom]);
Memo1.Lines.Add( LUrl );
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Edit1.Text := 'Ankara';
Edit2.Text := 'Mamak';
end;

Saygılarımla
Muharrem ARMAN
Yorumları: 223
Konuları: 50
Kayıt Tarihi: 10-11-2016
Rep Puanı: 268 Acemi
20-05-2023, Saat: 22:38
(Son Düzenleme: 20-05-2023, Saat: 22:42, Düzenleyen: codder71.)
(20-05-2023, Saat: 17:03)mrmarman Adlı Kullanıcıdan Alıntı: Yine başa döndük. verdiğim örnek buna ilişkin Google'dan basit bir sorgu ile adresten Lat / Lon koordinatları çekip işe öyle başlayacaksınız.
Haa. ben kurumda Naklen Yayın araçlarının konumlandırılması için benzer bir yapıyı şöyle kurdum. Türkiye İl İlçe GPS koordinat bankası buldum netten, onu veritabanına aldım. İl / İlçe seçince hemen koordinat çıkıyor oradan sonra detaya gidiyorum.
bkz. GithubLinki
Sana şöyle bir test kodu hazırladım. Google Maps'in ne şekilde ilçeyi çevrelediğini inceledim. Koordinatı girip yanında konum adını verdiğinde odaklanıp place adı tutuyorsa sınırlarını çizdiğini gördüm.
En azında il / ilçe bazında koordinat alırsın eğer browse edilirse ilçe'nin etrafının çevrelendiği bir harita da gösterebilirsin.
uses System.Net.HttpClientComponent;
Type
tLocation = record
Latitude, Longitude, LZoom : String;
end;
function GetGeoLoc( aSehir, aIlce: WideString ): tLocation;
const
SearchFormat = 'https://www.google.com/maps/place/%s,%s';
var
aUrl : String;
aClient : TNetHTTPClient;
sResponse : TStringStream;
aSrc : String;
LStat : Integer;
strBlok : String;
begin
Result := default(tLocation);
strBlok := '';
aUrl := Format( SearchFormat, [ aSehir, aIlce ] );
aClient := TNetHTTPClient.Create(nil);
try
aClient.UserAgent := 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36'; // 'Dalvik/2.1.0 (Linux; U; Android 8.0.0; SM-N950F Build/R16NW)';
aClient.Accept := 'text/html';
sResponse := TStringStream.Create( '', TEncoding.UTF8 );
try
LStat := aClient.Get( aUrl, sResponse ).StatusCode;
if LStat = 200 then
begin
sResponse.SaveToFile( ExtractFilePath(paramStr(0)) + 'gelen.html' );
strBlok := sResponse.DataString;
end;
finally
FreeAndNil(sResponse);
end;
// Parse Section
// ------------------------------------------------------------------------ //
aSrc := 'https://www.google.com/maps/preview/place/';
if Pos(aSrc, strBlok) > 0 then
begin
System.Delete( strBlok, 1, Pos(aSrc, strBlok) -1 );
aSrc := '@';
if Pos(aSrc, strBlok) > 0 then
begin
System.Delete( strBlok, 1, Pos(aSrc, strBlok) );
Result.Latitude := Copy(strBlok, 1, Pos(',', strBlok)-1);
System.Delete( strBlok, 1, Pos(',', strBlok) );
Result.Longitude := Copy(strBlok, 1, Pos(',', strBlok)-1);
Result.LZoom := 'z10';
end;
end;
finally
FreeAndNil(aClient);
end;
end;
procedure TForm1.BitBtn1Click(Sender: TObject);
var
LUrl : String;
begin
With GetGeoLoc( Edit1.Text, Edit2.Text ) do
LUrl := Format('https://www.google.com/maps/place/%s,%s/@%s%%2F%s,%s', [Edit1.Text, Edit2.Text, Latitude, Longitude, LZoom]);
Memo1.Lines.Add( LUrl );
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Edit1.Text := 'Ankara';
Edit2.Text := 'Mamak';
end;

Hocam çok saolun elinize sağlık
Bu googleden ve diğer web sitelerinden sorgu işlemlerinde iyi değilim ama örnek kodlarınız üzerinden giderek inş kendimi geliştireceğim. Tekrardan çok teşekkür ederim.
Hocam bu arada alttaki linki inceledim birisi aklımdan geçeni zaten yapmıs il ilçe kordinat almış ve listelemiş
|