Beispiel #1
0
function osm_info($ret, $object, $param) {
  global $load_xml;
  global $object_elements;

  if(in_array("internal", $param["info_noshow"])) {
    $ret[]=array("internal", "X");
    return;
  }

  $r="";
  $r.="<h4>Info</h4>\n";
  $r.="Type/ID: ".$object->id."<br>\n";
  if($object->element!="coll") {
    $res_info=sql_query("select * from ".$object_elements[$object->element]."s where ".
      "id='$object->only_id'");
    $elem_info=pg_fetch_assoc($res_info);
    $r.="Last changed: ".$elem_info[tstamp]." by ".$elem_info[user_name]."<br/>\n";
  }

  $r.="<h4>Tags</h4>\n";
  foreach($object->tags->data() as $k=>$v) {
    $r.="$k: $v<br/>\n";
  }

// Members of
  $qry="select 'rel' as element, relation_id as id, member_role from relation_members where member_id='$object->only_id' and member_type='$object->place_type_id' ".
    "union ".
    "select 'coll' as element, coll_id as id, member_role from coll_members where member_id='$object->only_id' and member_type='$object->place_type_id'";

  $list=array();
  $res=sql_query($qry);
  while($elem=pg_fetch_assoc($res)) {
    $list[]=$elem;
  }

  if(sizeof($list)) {
    $r.="<h4>Members of</h4>\n";
    load_objects($list);

    foreach($list as $elem) {
      $ob=load_object($elem);
      $r.=list_entry($ob->id, $ob->long_name(), array($ob->tags->get("type"), ($elem[member_role]?"as $elem[member_role]":"no role")));
      $load_xml[]=$ob->id;
    }

  }

  if($object->place()->members()) {
    $r.="<h4>Members</h4>\n";
    foreach($object->place()->members() as $member) {
      $load_xml[]=$member[0]->id;
      $r.=list_entry($member[0]->id, $member[0]->long_name(), $member[1]?array($member[1]):null);
    }
  }

  $r.="<h4>".lang("head:actions")."</h4>\n";
  if(($object->place_type=="node")||($object->place_type=="way")||($object->place_type=="rel")) {
    $r.="<li><a href='http://www.openstreetmap.org/browse/{$object_elements[$object->place_type]}/$object->only_id'>".lang("action_browse")."</a></li>\n";
  }
  $geo=$object->place()->get_centre();
  if(sizeof($geo)) {
//    $r.=print_r($geo, 1);
    $geo=goole_to_utm($geo, 1);
    $r.="<li><a href='http://www.openstreetmap.org/edit?lat=$geo[lat]&lon=$geo[lon]&zoom=16'>".lang("action_edit")."</a></li>\n";
  }

  $ret[]=array("internal", $r);
}
Beispiel #2
0
function routing($ret, $object, $param) {
  global $key_cloudmade_api;
  global $routing_gpx;
  global $routing_end_pos;
  global $ui_lang;

  if(in_array("routing", $param["info_noshow"])) {
    $ret[]=array("routing", "X");
    return;
  }

  $ret[]=array("routing", "<h4>Actions</h4>");
  if($param[pos_lon])
    $r ="<a href='javascript:set_my_pos()'>".lang("geo_change_pos")."</a><br>\n";
  else
    $r ="<button onClick='javascript:set_my_pos()'>".lang("geo_set_pos")."</button><br>\n";
  $r.="Route type: <select id='route_type' onChange='change_route_type()'>";
  foreach(array("car", "car_shortest", "bicycle", "foot") as $t) {
    $r.="<option value='$t'";
    if($t==$param[route_type])
      $r.=" selected";
    $r.=">".lang("routing_type_$t")."</option>\n";
  }
  $r.="</select><br>\n";
  $ret[]=array("routing", $r);

  if($param[pos_lon]) {
    $poss=goole_to_utm(array("lon"=>$param[pos_lon], "lat"=>$param[pos_lat]));
//    print_r($poss);
    if($param[routing_end_lon]) {
      $routing_end_pos=goole_to_utm(array("lon"=>$param[routing_end_lon], "lat"=>$param[routing_end_lat]));
    }
    else {
      $routing_end_pos=goole_to_utm($object->place()->get_centre());
//      $res=sql_query("select astext(ST_Centroid(way)) as pos from geo where element='$object->element' and osm_id='$object->only_id'");
//      $elem=pg_fetch_assoc($res);
//      if(ereg("POINT\(([0-9\.]*) ([0-9\.]*)\)", $elem["pos"], $m)) {
//	$routing_end_pos=goole_to_utm(array("lon"=>$m[1], "lat"=>$m[2]));
//      }
    }

    if(!$routing_end_pos) {
      $ret[]=array("routing", "Error: Could not determine destination");
      return;
    }

    $ret[]=array("routing", "<h4>Route</h4>\n");

    $url="http://routes.cloudmade.com/$key_cloudmade_api/api/0.3/".
         "$poss[lat],$poss[lon],$routing_end_pos[lat],$routing_end_pos[lon]/".
	 implode("/", explode("_", $param[route_type])).".gpx?lang=$ui_lang";

    if(!(@$r=file_get_contents($url))) {
      $ret[]=array("routing", "Error: Could not download route");
      unset($routing_gpx);
      return;
    }

    //$ret[]=array("routing", "$url<br>\n");
    if(substr($r, 0, 1)=="<") {
      $routing_gpx=$r;
      $routing_gpx=new DOMDocument();
      $routing_gpx->loadXML($r);
      $text="";

      $gpx=$routing_gpx->getElementsByTagname("gpx");
      if($gpx) {
	$c=$gpx->item(0)->getElementsByTagname("extensions");
	if($c) {
	  $c=$c->item(0);
	  $c1=$c->getElementsByTagname("distance");
	  $text.=lang("routing_distance").": ".
	         $c1->item(0)->textContent."m<br>\n";
	  $c1=$c->getElementsByTagname("time");
	  $text.=lang("routing_time").": ".
	         format_time($c1->item(0)->textContent)."<br/>\n";
	  $text.="<hr/>\n";
	}

	$c=$gpx->item(0)->getElementsByTagname("rtept");
	for($i=0; $i<$c->length; $i++) {
	  $c1=$c->item($i)->getElementsByTagname("desc");
	  $text.="".($c1->item(0)->textContent)."<br/>\n";
	}

	$text.="<hr/>\n";
	$text.=lang("routing_disclaimer")."<br/>\n";
      }
//      $c=$c->firstChild;
//      while($c) {
//        $r.="$c->textContent<br>\n";
//	$c=$c->nextSibling;
//      }
      $ret[]=array("routing", $text);
    }
    else {
      $ret[]=array("routing", "Error: $r");
      unset($routing_gpx);
      return;
    }
  }
}