我坚持在谷歌地图上显示多个结果。如果我的搜索结果在同一位置包含多个标记,则只有一个可访问。 我正在使用google maps v3 api library
这是我的代码:
$n = 0;
foreach ($firm as $f) {
if ($f->active == 1 && in_array($f->skd_n, $dejavnost) && $f->lat != 0) {
$lat_f = $f->lat;
$lng_f = $f->lng;
$distance = (($this->distance($lat, $lng, $lat_f, $lng_f)) * 1000);
if ($distance <= $rad && $n <= 199) {
$marker = array();
$marker['position'] = "$lat_f, $lng_f";
if ($f->phone != 0) {
$marker['infowindow_content'] = '<div class="info_window">' . "$f->title" . '<br/>' .
'<div class="pin_icon"></div>' .
"$f->address" . '<br/>' .
'<div class="phone_icon"></div>' .
"$f->phone" . '<br/>' . '<hr>' .
'<div class="directions_icon"><a href="'.site_url()."domov/direction"."?lat=".$lat."&lng=".$lng."&lat_f=".$lat_f."&lng_f=".$lng_f.'" onClick="return popup(this)">Pokaži pot</a></div>' .
'<div class="street_view_icon"><a href="'.site_url()."domov/street_view"."?lat_f=".$lat_f."&lng_f=".$lng_f.'" onClick="return popup(this)">Street view</a></div>' .
'</div><br/>';
} else {
$marker['infowindow_content'] = '<div class="info_window">' . "$f->title" . '<br/>' .
'<div class="pin_icon"></div>' .
"$f->address" . '<br/>' . '<hr>' .
'<div class="directions_icon"><a href="'.site_url()."domov/direction"."?lat=".$lat."&lng=".$lng."&lat_f=".$lat_f."&lng_f=".$lng_f.'" onClick="return popup(this)">Pokaži pot</a></div>' .
'<div class="street_view_icon"><a href="'.site_url()."domov/street_view"."?lat_f=".$lat_f."&lng_f=".$lng_f.'" onClick="return popup(this)">Street view</a></div>' .
'</div>';
}
$marker['animation'] = 'DROP';
$marker['zIndex'] = '0';
$marker['icon'] = '../images/pin-map-red.png';
$this->googlemaps->add_marker($marker);
$n++;
}
}
}
尝试使用location&#34; ljubljana&#34;,&#34; radij&#34; - 10000并选择&#34; restavracije&#34;。更强的标记阴影意味着在同一位置有多个结果,这里我想显示所有这些结果。我该怎么办? 以下是my page来测试我的问题
我正在考虑为我的数据库中的坐标设置新值。例如,如果我将经度改为0.000014,我会得到我想要的结果。你可以帮我查询改变所有重复的坐标(纬度和经度)并设置它们像#34;如果lat / lng有重复的值,为每一行设置lng + 0.000014&#34;。 谢谢!
答案 0 :(得分:1)
我决定更改代码以显示多个结果。我不知道如何在&#39; infowindow_content&#39;中使用相同的$ lat_f和$ lng_f显示所有结果标题。值。 有什么建议吗?
$n = 0;
foreach ($firm as $f) {
if ($f->active == 1 && in_array($f->skd_n, $dejavnost) && $f->lat != 0) {
$lat_f = $f->lat;
$lng_f = $f->lng;
$distance = (($this->distance($lat, $lng, $lat_f, $lng_f)) * 1000);
if ($distance <= $rad && $n <= 199) {
$marker = array();
$marker['position'] = "$lat_f, $lng_f";
$marker['infowindow_content'] = "$f->title";
$marker['animation'] = 'DROP';
$marker['zIndex'] = '0';
$marker['icon'] = '../images/pin-map-red.png';
$this->googlemaps->add_marker($marker);
$n++;
}
}
}
答案 1 :(得分:0)
由于我不知道您的表结构如何,您可以使用此查询过滤掉数据库中的重复值
Select t1.id, t1.ColumnA, t1.ColumnB
From Table t1
inner join Table t2
on (t1.id <> i2.id AND t1.columnA = t2.columnA AND t1.columnB = t2.columnB)
或者这种查询
SELECT t1.ID, t1.COLUMN_A, t1.COLUMN_B
FROM mytable AS t1
INNER JOIN (
SELECT COLUMN_A, COLUMN_B
FROM mytable
GROUP BY COLUMN_A, COLUMN_B
HAVING COUNT(*) > 1
) AS t2 ON t1.COLUMN_A = t2.COLUMN_A AND t1.COLUMN_B = t2.COLUMN_B
一旦你有了行,就可以在数据库中手动更改它们,或者如果数据太多,你应该编写带有一些foreach循环的php脚本,并在所需的字段上添加所需的值(0.000014)
解决问题的另一种方法应该是检查一个标记是否可以有多个描述。如果是这样,我建议你这样做,而且你不必制作所有那些mysql和phpscript的恶作剧。