gpt4 book ai didi

java - 找出其他两个点之间点 x 和 y 的百分比

转载 作者:行者123 更新时间:2023-11-30 01:02:31 25 4
gpt4 key购买 nike

在我的 android 应用程序中,我有简单的“ map ”,它是基于卫星 map 的图像。我在这张 map 的两个角上有精确的 LatLng 位置:准确地说是左上角和右下角。现在,通过给定的 LatLng 点,我想创建一个小 View 并将其添加到 map (标记)上。为此,我必须在我的“ map ”上计算以像素为单位的 x 和 y 百分比。

总结一下我的数据:

LatLng MAP_LEFT_TOP; //constant point
LatLng MAP_RIGHT_BOTTOM; //constant point
LatLng location; //point, which should be inside map rectangle

我要计算的内容:

float percentageX; //percentage x position of "location" on the map
float percentageY; //percentage y position of "location" on the map

在这里我找到了函数:

LatLng interpolate(LatLng from, LatLng to, double fraction)

https://github.com/googlemaps/android-maps-utils/blob/master/library/src/com/google/maps/android/SphericalUtil.java

我需要一些东西,它以相反的方式工作。这是我的实现,但它没有给我正确的结果(y/经度相同):

double findFractionX(double latitudeLeftTop, double latitudeRightBottom, double latitude){
return (latitude - latitudeLeftTop) / (latitudeRightBottom - latitudeLeftTop);
}

然后我可以像这样得到标记的最终位置:

float imageViewWidth; //width of the imageView holding map
float imageViewHeight; //height of the imageView holding map
float x = percentageX * imageViewWidth;
float y = percentageY * imageViewHeight;

编辑:我的错误是使用纬度获取 x,使用经度获取 y 而恰恰相反。

仍然有问题,这是它在应用程序中的样子:

enter image description here

这是它应该在的地方(我用涂鸦来做这个例子):

enter image description here

为了清楚起见,我说的是名为“1.1”的点,请不要注意其他点,它们已硬编码在图像本身中。

最佳答案

因为我有另一个想法要写出来,所以我会把两者都放在一个完整的答案中以留出更多空间。

首先,检查您是否不小心切换了 long/latx/y:

Long = xlat = y

那么,你怎么看你添加的样子呢?当您获得 map 标记的确切位置时,简单地向该位置添加 View 可能会看起来不合适。

View 本身可能有宽度和高度,您可能希望将它放在标记的顶部,就像在 Google map 上单击商店时一样?如果你只是把它放在计算出的位置,它会把它的左上角放在那个位置。

关于java - 找出其他两个点之间点 x 和 y 的百分比,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39245276/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com