Index: googlemap.php =================================================================== --- googlemap.php (revision 11051) +++ googlemap.php (working copy) @@ -255,25 +255,31 @@ $parent = explode (',', $place); $parent = array_reverse($parent); $place_id = 0; + $best_place_id = 0; for ($i=0; $i $placename) { - $pl_id= - WT_DB::prepare("SELECT pl_id FROM `##placelocation` WHERE pl_level=? AND pl_parent_id=? AND pl_place LIKE ? ORDER BY pl_place") + $row= + WT_DB::prepare("SELECT pl_id, pl_lati, pl_long FROM `##placelocation` WHERE pl_level=? AND pl_parent_id=? AND pl_place LIKE ? ORDER BY pl_place") ->execute(array($i, $place_id, $placename)) - ->fetchOne(); - if (!empty($pl_id)) break; + ->fetchOneRow(); + if ($row) break; } - if (empty($pl_id)) break; - $place_id = $pl_id; + if (!$row) break; + if (($row->pl_lati != '0') || ($row->pl_long != '0')) { + // Keep track of lowest-level place that has valid coordinates + $best_place_id = $row->pl_id; + } + $place_id = $row->pl_id; } $row= // WT_DB::prepare("SELECT pl_lati, pl_long, pl_zoom, pl_icon, pl_level FROM `##placelocation` WHERE pl_id=? ORDER BY pl_place") WT_DB::prepare("SELECT pl_media, sv_lati, sv_long, sv_bearing, sv_elevation, sv_zoom, pl_lati, pl_long, pl_zoom, pl_icon, pl_level FROM `##placelocation` WHERE pl_id=? ORDER BY pl_place") - ->execute(array($place_id)) + ->execute(array($best_place_id)) ->fetchOneRow(); if ($row) { return array('media'=>$row->pl_media, 'sv_lati'=>$row->sv_lati, 'sv_long'=>$row->sv_long, 'sv_bearing'=>$row->sv_bearing, 'sv_elevation'=>$row->sv_elevation, 'sv_zoom'=>$row->sv_zoom, 'lati'=>$row->pl_lati, 'long'=>$row->pl_long, 'zoom'=>$row->pl_zoom, 'icon'=>$row->pl_icon, 'level'=>$row->pl_level);