Bir ülke haritasında şehirlerin eşleme nasıl yapılır?

3 Cevap php

Bir seri ilanlar web sitesi var. Kullanıcıların ilk olarak 'arama alanı' belirtmek zorunda ...

Ben Kullanıcılar aynı zamanda seçilen 'alan' reklamlar 'yakın' bulmak için bir onay kutusunu kontrol edebilirsiniz bir işlev eklemek istiyorum.

Ama ben nasıl akıllı bir şekilde birlikte 'mapp' veya 'bağlantı' alanlarını bilmiyorum. Bunu yapmak için bazı tavsiyeler gerekir ...

Örneğin, nasıl ilanlar için arama yapabilirsiniz web sitelerinde yapılan 'kilometre yarıçapı arama' nedir?

Teşekkürler

MEZUNLARI sonuçlar için MYSQL sorgulamak için PHP kullanarak Im. Ve şu anda tüm alanlarda (ayrıca tablo alan değeri Nevada = Nevada) alanında kendi adları Yani sorgu açılan listenin değerini alma ve mysql tabloda bu değer için arama yapılır.

3 Cevap

Bunun için yarıçapı arama komut dosyası kullanmak zorunda olacak. Ayrıca, boylam, latiture, vb şehir / ülke olarak içinde bilgi ile ilçe / şehirlerde bazı veritabanı gerekiyor

Orada oldukça yarıçapı arama komut vardır, birini bulmak için biraz google gerekir.

Aşağıdaki bağlantı Microsoft SQL Server için özel olarak yazılmış, ama MySQL dönüştürmek için çok zor olmayacaktır şüpheleniyorsanız.

ZIP code Latitude/Longitude proximity search

Bu kullandığımız biridir. SQL Server tekrar ama değiştirmek çok kolay.

Web üzerindeki diğer örnekler çok tehlikeli sonuçlar verdi ....

ALTER function [dbo].[udf_Haversine](@lat1 float, @long1 float, @lat2 float, @long2 float) returns float begin
    declare @dlon float, @dlat float, @rlat1 float, @rlat2 float, @rlong1 float, @rlong2 float, @a float, @c float, @R float, @d float, @DtoR float

    select @DtoR = 0.017453293
    select @R = 3937 --3976

    select 
        @rlat1 = @lat1 * @DtoR,
        @rlong1 = @long1 * @DtoR,
        @rlat2 = @lat2 * @DtoR,
        @rlong2 = @long2 * @DtoR

    select 
        @dlon = @rlong1 - @rlong2,
        @dlat = @rlat1 - @rlat2

    select @a = power(sin(@dlat/2), 2) + cos(@rlat1) * cos(@rlat2) * power(sin(@dlon/2), 2)
    select @c = 2 * atn2(sqrt(@a), sqrt(1-@a))
    select @d = @R * @c

    return @d 
end