2011-03-25 3 views
3

Я использую API Карт Google, чтобы пользователи могли вводить их местоположение и возвращать результаты в зависимости от их местоположения. Однако, когда я ввожу некоторые адреса в Австралии, я получаю дубликаты, такие как:удалять повторяющиеся адреса из google maps api results

Асквит, Новый Южный Уэльс 2077, Австралия
Asquith Новый Южный Уэльс, Австралия

и

Wollstonecraft, Сидней Новый Южный Уэльс 2065, Австралия
Wollstonecraft Новый Южный Уэльс 2065, Австралия

В настоящее время я предоставляю возможность члену выбирать между результатами, если есть дубликаты, но я чувствую, что с помощью какого-то умного PHP я могу дублировать этот шаг. Я не очень хорошо разбираюсь в preg_replace (если это решение), и надеюсь, что у кого-то есть решение. В принципе, я хочу, чтобы функция сравнивала два (или более) адреса и возвращала true, если они одинаковы и ложны, если они являются разными адресами.

Обратите внимание также на второй пример, добавлен Сидней, поэтому это необходимо учитывать в любом решении, которое любой мог бы любезно предложить.

Я думаю, что большинство дублирующих наборов результатов будет в целом в том же формате и должно быть в состоянии настроить функцию, если я замечаю другие исключения.

Большое спасибо за любую помощь, которая может быть предоставлена.

+0

На самом деле результаты не являются дубликатами. Если вы посмотрите на координаты результатов, они указывают на разные местоположения, хотя служба геокодирования google возвращает почти одинаковые имена мест. – GoG

ответ

0

Вы можете использовать функцию similar_text, чтобы определить, насколько похожи две строки.

Пример:

 

<?php 
similar_text("Wollstonecraft, Sydney New South Wales 2065, Australia", "Wollstonecraft New South Wales 2065, Australia", $p); 
echo "Percent: $p%"; 
?> 
 

Это будет производить: Percent: 92%

+0

Как это влияет на производительность? –

+0

@ Gerben Jacbos Strings с символами 20000+ занимает 3-5 секунд для обработки, что-либо еще (10000 и ниже) занимает долю секунды. – Stephan

+0

@ Stephen благодарит за ваше решение, это была именно та функция, которую я искал. Оказалось, что дубликаты состоят в том, что в Google были перечислены адреса станций «Asquith» и «Wollstonecraft», а также результат для самих пригородов, следовательно, это дубликаты. Я только что проверил тип местоположения и отфильтровал их, но вы ответили на мои вопросы отлично. Благодарю. – scottsanders

Смежные вопросы