/** * Create and return a Services_OpenStreetMap_Node * * Latitude and longitude must be specified, array of tags optional. * * <code> * $node = $osm->createNode($lat, $lon, array('building' => 'yes')); * </code> * * @param float $latitude Latitude of node * @param float $longitude Longitude of node * @param array $tags Array of key->value tag pairs. * * @return Services_OpenStreetMap_Node */ public function createNode($latitude, $longitude, array $tags = array()) { $node = new Services_OpenStreetMap_Node(); $config = $this->getConfig(); $apiVersion = $config->getValue('api_version'); $userAgent = $config->getValue('User-Agent'); $xml = "<?xml version='1.0' encoding='UTF-8'?>\n<osm version='{$apiVersion}' generator='{$userAgent}'>\n<node lat='{$latitude}' lon='{$longitude}' version='1'/></osm>"; $node->setLat($latitude); $node->setLon($longitude); $node->setXml(simplexml_load_string($xml)); $node->setId($this->newId--); if (!empty($tags)) { foreach ($tags as $key => $value) { $node->setTag($key, $value); } } return $node; }