Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用PHP将Bing地图四键转换为缩放级别、x坐标和y坐标?_C#_Php_Geolocation_Bing Maps - Fatal编程技术网

C# 如何使用PHP将Bing地图四键转换为缩放级别、x坐标和y坐标?

C# 如何使用PHP将Bing地图四键转换为缩放级别、x坐标和y坐标?,c#,php,geolocation,bing-maps,C#,Php,Geolocation,Bing Maps,我正在尝试用PHP编写一个脚本,它将接受Bing maps四键,然后返回缩放级别、x坐标和y坐标,这样我就可以使用自己的地图了。我的代码基于Microsoft提供的C#示例代码: public static void QuadKeyToTileXY(字符串quadKey,out int tileX,out int tileY,out int levelOfDetail) { tileX=tileY=0; levelOfDetail=四键长度; 对于(int i=详细级别;i>0;i--) { i

我正在尝试用PHP编写一个脚本,它将接受Bing maps四键,然后返回缩放级别、x坐标和y坐标,这样我就可以使用自己的地图了。我的代码基于Microsoft提供的C#示例代码:

public static void QuadKeyToTileXY(字符串quadKey,out int tileX,out int tileY,out int levelOfDetail)
{
tileX=tileY=0;
levelOfDetail=四键长度;
对于(int i=详细级别;i>0;i--)
{

int mask=1我的代码中有我应该看到的错误

$zoom = count($quadkey);
错误,并计算$quadkeys的数量,而不是字符串的长度

$zoom = strlen($quadkey);
此外,URL应该在for循环的外部生成,就在它的下方。如果其他人需要PHP脚本将Bing地图四键转换为坐标,我将更新的代码放在下面

$quadkey = intval($_GET["quadkey"]);

$zoom = strlen($quadkey);

for ($i = $zoom; $i > 0; $i--)
{
    $mask = 1 << ($i - 1);

    $quadkey_array = str_split($quadkey);

    switch ($quadkey_array[$zoom - $i])
    {
        case 0:
            break;

        case 1:
            $x |= $mask;
            break;

        case 2:
            $y |= $mask;
            break;

        case 3:
            $x |= $mask;
            $y |= $mask;
            break;

        default:
            echo "Error";
    }
}

echo "/" . $zoom . "/" . $x . "/" . $y . ".png";
$quadkey=intval($\u GET[“quadkey”]);
$zoom=strlen($quadkey);
对于($i=$zoom;$i>0;$i--)
{

$mask=1Bing Ajax 7中的四键不仅仅是提供的项目,它还提供x、y和levelOfDetail,也称为缩放

在我发现这一点之前,我也曾考虑过服务器端转换,但它可以在javascript中使用

Bing地图附带x、y和z,可直接用于OSM web请求:

var map = new Microsoft.Maps.Map( <snip> )
function useZXY(tile) {
    return "http://tile.openstreetmap.org/" + 

            tile.levelOfDetail + "/" + 
            tile.x + "/" + 
            tile.y +".png";

}

var omsTS = new Microsoft.Maps.TileSource({ uriConstructor: useZXY  });

var omsTL = new Microsoft.Maps.TileLayer({ mercator: omsTS, opacity: 0.5 });
map.entities.push(omsTL) ;
var-map=new Microsoft.Maps.map()
函数useZXY(平铺){
返回“http://tile.openstreetmap.org/" + 
tile.levelOfDetail+“/”+
tile.x+“/”+
tile.y+“.png”;
}
var omsTS=new Microsoft.Maps.TileSource({uriConstructor:useZXY});
var-omsTL=new Microsoft.Maps.tillelayer({mercator:omsTS,不透明度:0.5});
map.entities.push(omsTL);
$quadkey = intval($_GET["quadkey"]);

$zoom = strlen($quadkey);

for ($i = $zoom; $i > 0; $i--)
{
    $mask = 1 << ($i - 1);

    $quadkey_array = str_split($quadkey);

    switch ($quadkey_array[$zoom - $i])
    {
        case 0:
            break;

        case 1:
            $x |= $mask;
            break;

        case 2:
            $y |= $mask;
            break;

        case 3:
            $x |= $mask;
            $y |= $mask;
            break;

        default:
            echo "Error";
    }
}

echo "/" . $zoom . "/" . $x . "/" . $y . ".png";
var map = new Microsoft.Maps.Map( <snip> )
function useZXY(tile) {
    return "http://tile.openstreetmap.org/" + 

            tile.levelOfDetail + "/" + 
            tile.x + "/" + 
            tile.y +".png";

}

var omsTS = new Microsoft.Maps.TileSource({ uriConstructor: useZXY  });

var omsTL = new Microsoft.Maps.TileLayer({ mercator: omsTS, opacity: 0.5 });
map.entities.push(omsTL) ;