Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Adresten Konum Kordinat bulma [Çözüldü.]
#1
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.
Cevapla
#2
Bir çıkış noktası için şu DelphiCan linkini incelemek  isteyebilirsiniz.
Saygılarımla
Muharrem ARMAN

guplouajuixjzfm15eqb.gif
Cevapla
#3
(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.
Cevapla
#4
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

guplouajuixjzfm15eqb.gif
Cevapla
#5
(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 Smile
Cevapla
#6
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;





d8efsdxcmzxin3ulkexe.gif
Saygılarımla
Muharrem ARMAN

guplouajuixjzfm15eqb.gif
Cevapla
#7
(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;





d8efsdxcmzxin3ulkexe.gif

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ş Smile
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Çözüldü _ Delphi Community Edition SDK ayarları hatası cinarbil 1 485 12-03-2026, Saat: 10:25
Son Yorum: damert6
  Webbrowser Sorunu [ÇÖZÜLDÜ] codder71 7 416 10-02-2026, Saat: 17:04
Son Yorum: codder71
  Konum izni Requestpermissions turkcann 5 1.179 12-03-2025, Saat: 14:08
Son Yorum: Mr.X
  IOS FCM göndermek? [ÇÖZÜLDÜ] Mr.X 17 3.419 04-12-2024, Saat: 11:33
Son Yorum: shooterman
  FMX ile koordinat bazlı yol bulma(Path Finding) berk06 5 1.001 13-11-2024, Saat: 08:58
Son Yorum: engerex



Konuyu Okuyanlar: 1 Ziyaretçi