Coğrafi yakınlık Arama

4 Cevap php

Bu google harita içine belirli ülke ve / veya şehir içinde kalan bütün nesneleri bulmak devletler uygulamasında gereksinim vardır.

Biz kendi enlem ve boylam google harita API kullanarak precalucated ve veritabanında saklanan ile nesneler var. Bu nesneler bazı zamanlar onların hizmetlerini sağlayabilir, içinde hizmet Withing belirli hizmet yelpazesi / yarıçapı sağlar.

For e.g. now the situation is like i wanna to find out all the objects which resides in Amsterdam for instance.

The application should find out all the objects that are located in Amsterdam, also the objects which are not exactly located in Amsterdam but nearby, having service range up to Amsterdam.

So i have known latitude, longitude values for Amsterdam returned by google map, also the objects having respective lat,lng value and service range/radius stored in database. How can i make it possible?

4 Cevap

Muhtemelen DB poligon olarak ülkeler / şehirler temsil, ve sonra kesişir OpenGIS tarzı çokgen kavşak işlevleri kullanmanız gerekir.

But, MySQL not (- Minimum Sınır Dikdörtgen sadece MBR) düzgün çokgen kavşak uygulamak gelmez. Yani bu yaklaşım, teori doğru ise, sadece MySQL ile sizin için çalışmaz. Sen Postgres hareketli düşünebilirsiniz.

Ne yapabilirsiniz (bunu kütüphaneler bulabilirsiniz) sizin DB'ın MBR kavşak yeteneklerini kullanmak ve poligon / nokta kavşak yapar kendi kodu ile onlara destek olduğunu.

MySQL adlı bakmak isteyebilirsiniz spatial extensions.

Sen Contains işlevini kullanmanız gerekir. Paul yaptığı açıklamada da belirtildiği gibi Ancak, bölgeler çokgen olarak temsil edilmelidir. Değilse, o zaman ben senin en iyi bahis zaten noktasında merkezli bir çokgen oluşturmak için olduğuna inanıyorum.

Tamam ben temelde 2 enlem / boylam noktaları arasındaki mesafeyi hesaplamak için çalışıyoruz anlamak ne gelen. Ben 10 mil (diyelim) içinde size alanının dışında nerede olanları indirim yaparak başlamak istiyorum. Yani merkezi bir noktadan size 10 kilometre, Doğu, Batı, Güney ve Kuzey koordinatları almak isteyeceksiniz. Bunu yapmak için Great-circle distance formülü kullanmanız gerekir.

Eğer daha yukarı sonra merkez noktasından uzaklığa göre puan sipariş etmek gerekir bu verileri kırmak istiyorsanız bu noktadan size veri var. Bunu yapmak için kullanmak gerekir Haversine formula

Ben bir PHP etiketi var ama SQL (çoğunlukla) ve C # hem de bazı formüller ve örnekler dahil olduğunu görebilirsiniz.

Haversine Formula in C# and in SQL

Determine the distance between ZIP codes using C#

Great Circle SQL

Great Circle 2

Eğer harici bir hizmet yakınlık mekaniği ayrılmak istiyorsa da LocalSolr / LocalLucene gibi bir şey bakmak olabilir.