Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/310.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
Java 计算谷歌地图中给定缩放级别的地图上方高度_Java_Android_Google Maps_Math_Google Maps Api 2 - Fatal编程技术网

Java 计算谷歌地图中给定缩放级别的地图上方高度

Java 计算谷歌地图中给定缩放级别的地图上方高度,java,android,google-maps,math,google-maps-api-2,Java,Android,Google Maps,Math,Google Maps Api 2,我试图计算地图上方的高度(忽略地形)给定缩放级别。我知道特定缩放级别的比例公式为591657550.5/2^(级别1)(),但我不确定如何使用此信息(或此信息是否正确)来求解地图上方的高度。非常感谢您的帮助。我将我的谷歌地图大小设置为5cm,选择了一个缩放级别,然后在谷歌地球上通过该缩放重新找到该位置,以获得眼睛高度级别(角度大小等式中的D值)。通过首先在屏幕上将贴图长度设置为5cm,然后使用591657550.5/2^(1级)*5cm的比例方程计算角度大小方程中的h值,我能够在角度大小方程中找

我试图计算地图上方的高度(忽略地形)给定缩放级别。我知道特定缩放级别的比例公式为591657550.5/2^(级别1)(),但我不确定如何使用此信息(或此信息是否正确)来求解地图上方的高度。非常感谢您的帮助。

我将我的谷歌地图大小设置为5cm,选择了一个缩放级别,然后在谷歌地球上通过该缩放重新找到该位置,以获得眼睛高度级别(角度大小等式中的D值)。通过首先在屏幕上将贴图长度设置为5cm,然后使用591657550.5/2^(1级)*5cm的比例方程计算角度大小方程中的h值,我能够在角度大小方程中找到h值。知道了这两个变量,我就能够计算出谷歌地图在5厘米宽(85.36222058)时显示图像的恒定角度。从这些信息中,我能够构造出这种方法,从缩放级别以相对准确度计算出地图上方的眼睛高度

public float getAltitude(float mapzoom){
    //this equation is a transformation of the angular size equation solving for D. See: http://en.wikipedia.org/wiki/Forced_perspective
    float googleearthaltitude;
    float firstPartOfEq= (float)(.05 * ((591657550.5/(Math.pow(2,(mapzoom-1))))/2));//amount displayed is .05 meters and map scale =591657550.5/(Math.pow(2,(mapzoom-1))))
    //this bit ^ essentially gets the h value in the angular size eq then divides it by 2
    googleearthaltitude =(firstPartOfEq) * ((float) (Math.cos(Math.toRadians(85.362/2)))/(float) (Math.sin(Math.toRadians(85.362/2))));//85.362 is angle which google maps displays on a 5cm wide screen
    return googleearthaltitude;
}

对不起,我的解释解释得不好。如果你们想用这个方法,请随意。对不起,我的句子措词不好

我将我的谷歌地图大小设置为5cm,选择了一个缩放级别,然后在谷歌地球中通过该缩放重新找到该位置,以获得眼睛高度级别(角度大小等式中的D值)。通过首先在屏幕上将贴图长度设置为5cm,然后使用591657550.5/2^(1级)*5cm的比例方程计算角度大小方程中的h值,我能够在角度大小方程中找到h值。知道了这两个变量,我就能够计算出谷歌地图在5厘米宽(85.36222058)时显示图像的恒定角度。从这些信息中,我能够构造出这种方法,从缩放级别以相对准确度计算出地图上方的眼睛高度

public float getAltitude(float mapzoom){
    //this equation is a transformation of the angular size equation solving for D. See: http://en.wikipedia.org/wiki/Forced_perspective
    float googleearthaltitude;
    float firstPartOfEq= (float)(.05 * ((591657550.5/(Math.pow(2,(mapzoom-1))))/2));//amount displayed is .05 meters and map scale =591657550.5/(Math.pow(2,(mapzoom-1))))
    //this bit ^ essentially gets the h value in the angular size eq then divides it by 2
    googleearthaltitude =(firstPartOfEq) * ((float) (Math.cos(Math.toRadians(85.362/2)))/(float) (Math.sin(Math.toRadians(85.362/2))));//85.362 is angle which google maps displays on a 5cm wide screen
    return googleearthaltitude;
}

对不起,我的解释解释得不好。如果你们想用这个方法,请随意。对不起,我的句子措词不好

我基本上已经将Javascript代码转换为Java。我希望这能奏效

public int convertRangeToZoom(double range) {
    //see: google.maps.v3.all.debug.js
    int zoom = (int) Math.round(Math.log(35200000 / range) / Math.log(2)); 
    if (zoom < 0) zoom = 0; 
    else if (zoom > 19) zoom = 19; 
    return zoom;
} 

public int convertZoomToRange(double zoom){
    //see: google.maps.v3.all.debug.js
    int range = (int) 35200000/(Math.pow(2, zoom)); 
    if (range < 300) range = 300; 
    return range; 
} 
public int convertRangeToZoom(双量程){
//请参阅:google.maps.v3.all.debug.js
int zoom=(int)Math.round(Math.log(35200000/范围)/Math.log(2));
如果(缩放<0)缩放=0;
否则,如果(缩放>19)缩放=19;
返回缩放;
} 
公共整数转换缩放橙色(双缩放){
//请参阅:google.maps.v3.all.debug.js
整数范围=(整数)35200000/(数学功率(2,缩放));
如果(范围<300)范围=300;
返回范围;
} 

我基本上已经将Javascript代码转换为Java。我希望这能奏效

public int convertRangeToZoom(double range) {
    //see: google.maps.v3.all.debug.js
    int zoom = (int) Math.round(Math.log(35200000 / range) / Math.log(2)); 
    if (zoom < 0) zoom = 0; 
    else if (zoom > 19) zoom = 19; 
    return zoom;
} 

public int convertZoomToRange(double zoom){
    //see: google.maps.v3.all.debug.js
    int range = (int) 35200000/(Math.pow(2, zoom)); 
    if (range < 300) range = 300; 
    return range; 
} 
public int convertRangeToZoom(双量程){
//请参阅:google.maps.v3.all.debug.js
int zoom=(int)Math.round(Math.log(35200000/范围)/Math.log(2));
如果(缩放<0)缩放=0;
否则,如果(缩放>19)缩放=19;
返回缩放;
} 
公共整数转换缩放橙色(双缩放){
//请参阅:google.maps.v3.all.debug.js
整数范围=(整数)35200000/(数学功率(2,缩放));
如果(范围<300)范围=300;
返回范围;
} 

这个问题(从数学上讲)有点定义不清;比例与高度的关系如何?我使用比例方程来计算变量h(以及手机上地图大小的常数5cm)和角度大小方程()。我和一个朋友提出了下面的解决方案,基本上是用它来解决一个三角形的腿。如果你能校对我的解决方案,或者提供一个替代方案,我将不胜感激;比例与高度的关系如何?我使用比例方程来计算变量h(以及手机上地图大小的常数5cm)和角度大小方程()。我和一个朋友提出了下面的解决方案,基本上是用它来解决一个三角形的腿。如果您能校对我的解决方案,或提供另一种解决方案,我将不胜感激。