Javascript OSM如何获取最近的节点

Javascript OSM如何获取最近的节点,javascript,path,gps,openstreetmap,nearest-neighbor,Javascript,Path,Gps,Openstreetmap,Nearest Neighbor,我将OSM中的主数据转换为表,这就是我的OSM中的主数据 下面是我的数据库数据 还有另外一个数据是公交车的gps数据,我每20秒收集一次公交车数据,现在它保存在我的数据库中。 问题是我应该如何使用js或php在osm中绘制路径。 我已经设计了算法,但它不起作用,因为它需要很长时间 我应该做的是通过数据库表路径和表节点中的osm数据纠正路由 我的三张桌子 [由osm开出][2] 非常感谢你能帮助我 <meta http-equiv="content-type" content="text

我将OSM中的主数据转换为表,这就是我的OSM中的主数据 下面是我的数据库数据 还有另外一个数据是公交车的gps数据,我每20秒收集一次公交车数据,现在它保存在我的数据库中。 问题是我应该如何使用js或php在osm中绘制路径。 我已经设计了算法,但它不起作用,因为它需要很长时间

我应该做的是通过数据库表路径和表节点中的osm数据纠正路由

我的三张桌子

[由osm开出][2]

非常感谢你能帮助我

<meta http-equiv="content-type" content="text/html; charset=utf-8"> 

$mysql\u server\u name='localhost'//改成自己的mysql数据库服务器
$mysql_username='root'//改成自己的mysql数据库用户名
$mysql_password=''//改成自己的mysql数据库密码
$mysql_database='goxml'//改成自己的mysql数据库名
$conn=mysql\u connect($mysql\u server\u name、$mysql\u username、$mysql\u password)或die(“错误连接”)//连接数据库
mysql_查询(“设置名称‘utf8’”)//数据库输出编码 应该与你的数据库编码保持一致.南昌网站建设公司百恒网络PHP工程师建议用UTF-8国际标准编码.
mysql\u select\u数据库($mysql\u数据库)//打开数据库
$sql_getstop=“从getstop中选择RouteId、NameZh、纬度、经度、GoBack;”//SQL语句
$result\u getstop=mysql\u query($sql\u getstop,$conn)//查询
$arr_getstop=array(array());
而($row1=mysql\u fetch\u数组($result\u getstop))
{
//$arr[]=$row1['Latitude'];
$arr_getstop[]=$row1;
}
echo$arr_getstop[1][“纬度];
echo$arr_getstop[9][‘纬度’];
//////////
$arr_test2=“从测试2中选择RouteID、BusID、Goback、经度、纬度,其中RouteID='1'”//SQL语句
$result\u test2=mysql\u查询($arr\u test2,$conn)//查询
$arr_test2=数组(array());
而($row2=mysql\u fetch\u数组($result\u test2))
{
//$arr[]=$row1['Latitude'];
$arr_test2[]=$row2;
}
对于($j=1;$j
请在此处输入代码


代码运行了几个小时以上,无法显示结果。您似乎在为某个问题拖拖拉拉

OSM有多种解决方案:

另请阅读gis.stackexchange.com上相关问题的答案:


你似乎在为一个问题拖拖拉拉

OSM有多种解决方案:

另请阅读gis.stackexchange.com上相关问题的答案:


您的问题非常不清楚。在标题中,您询问的是如何获取最近的节点。在问题正文中,您询问的是如何绘制路径。您能给我们一个清晰准确的问题吗?您是否有skype ID或line ID?如果我知道真实的节点,我可以绘制真实的路径,因为路径由NOED组成,所以问题是我知道t当我将总线数据(lat,lon)绘制到路径中时(它会出错),因此我必须使用osm(包括节点)要找到最近的节点来更正我的路径,这是路径,但不在正确的路径中。我需要使用osm来更正路径。并使其成为道路上的中心点,以便您希望将点与相应的道路匹配。这称为地图匹配。关于地图匹配,还有许多其他问题ith OSM。你的问题非常不清楚。在标题中,你问的是如何获得最近的节点。在问题正文中,你问的是如何绘制路径。你能给我们一个清晰准确的问题吗?你有skype ID或line ID吗?如果我知道真实的节点,我可以绘制真实的路径,因为路径由NOED组成,所以问题是我知道当我将总线数据(lat,lon)绘制到路径中时(它会出错),因此我必须使用osm(包括节点)要找到最近的节点来更正我的路径,这是路径,但不在正确的路径中。我需要使用osm来更正路径。并使其成为道路上的中心点,以便您希望将点与相应的道路匹配。这称为地图匹配。关于地图匹配,还有许多其他问题伊思·奥斯姆。
$mysql_server_name='localhost'; //改成自己的mysql数据库服务器
$mysql_username='root'; //改成自己的mysql数据库用户名
$mysql_password=''; //改成自己的mysql数据库密码
$mysql_database='goxml'; //改成自己的mysql数据库名
$conn=mysql_connect($mysql_server_name,$mysql_username,$mysql_password) or die("error connecting") ; //连接数据库
mysql_query("set names 'utf8'"); //数据库输出编码 应该与你的数据库编码保持一致.南昌网站建设公司百恒网络PHP工程师建议用UTF-8 国际标准编码.
mysql_select_db($mysql_database); //打开数据库
$sql_getstop ="SELECT RouteId,NameZh,Latitude,Longitude,GoBack FROM getstop; "; //SQL语句
$result_getstop = mysql_query($sql_getstop,$conn); //查询
$arr_getstop=array(array());
while($row1 = mysql_fetch_array($result_getstop))
{
//$arr[]=$row1['Latitude'];
$arr_getstop[]=$row1;

}

echo $arr_getstop[1]['Latitude'];
echo $arr_getstop[9]['Latitude'];
//////////
$arr_test2 ="SELECT RouteID,BusID,Goback,Longitude,Latitude FROM test2 where RouteID='1' ;"; //SQL语句
$result_test2 = mysql_query($arr_test2,$conn); //查询
$arr_test2=array(array());
while($row2 = mysql_fetch_array($result_test2))
{
    //$arr[]=$row1['Latitude'];
    $arr_test2[]=$row2;

}
for($j=1;$j<count($arr_test2);$j++)
{
echo $arr_test2[$j]['Latitude'];
echo $arr_test2[$j]['Longitude'];
echo "<br/>";
}
/*
//////////////////////////////输出所有的node
$arr_node ="SELECT ID,Lat,Lon FROM node where Lat>25.0883588 and Lon>121.4257346 and Lat <25.1883598 and Lon>121.4257316 ;"; //SQL语句
$result_node = mysql_query($arr_node,$conn); //查询
$arr_node=array(array());
while($row3 = mysql_fetch_array($result_node))
{
    //$arr[]=$row1['Latitude'];
    $arr_node[]=$row3;

}
echo "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%";
for($j=1;$j<count($arr_node);$j++)
{
echo $arr_node[$j]['Lat'];
echo $arr_node[$j]['Lon'];
echo "<br/>";
} */
///////////////////////超级运算
    echo "result is +++++++++++++++++++++++++++++++++++++++++++++++++";
for($j=0;$j<count($arr_test2);$j++)
    {
    $node_Lon1=$arr_test2[$j]['Longitude']+0.000117;
    $node_Lon2=$arr_test2[$j]['Longitude']-0.000117;
    $node_Lat1=$arr_test2[$j]['Latitude']+0.000117;
    $node_Lat2=$arr_test2[$j]['Latitude']-0.000117;
    $arr_node ="SELECT ID,Lat,Lon FROM node where Lat<$node_Lat1 and Lat>$node_Lat2 and Lon <$node_Lon1 and Lon>$node_Lon2 ;";
    $result_node = mysql_query($arr_node,$conn); //查询
    $arr_node=array(array());
    while($row3 = mysql_fetch_array($result_node))
    {
    //$arr[]=$row1['Latitude'];
    $arr_node[]=$row3;

    }
    for($m=1;$m<count($arr_node);$m++)
    {
        echo $arr_node[$m]['Lat'];
        echo $arr_node[$m]['Lon'];
        echo "<br/>";
    }

    }