- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 android 布局,它有一个谷歌地图布局,底部覆盖有一个小的 LinearLayout
。当用户选择 map 上的标记时,这个小布局就会变得可见。现在,我想知道选中的标记是否在选中时被小布局覆盖,比如它是否在 map 经度可见区域的前 80% 以内。我玩过 maps.getProjection().getVisibleRegion()
但我不确定我从这里去哪里。提前致谢
最佳答案
要检查 80%(或更多)的标记是否被您的小布局重叠,最好使用屏幕坐标,而不是 LatLng
。您应该获取标记的屏幕 y
坐标、标记 height
和“小布局”的 height
,然后检查 y
标记的坐标比小布局顶部的 y
坐标高 80%。
所以像这样:
public class MainActivity extends AppCompatActivity implements OnMapReadyCallback {
private static final String TAG = MainActivity.class.getSimpleName();
static final LatLng KYIV = new LatLng(50.450000, 30.523610);
private GoogleMap mGoogleMap;
private SupportMapFragment mMapSupportedFragment;
private LinearLayout mSmallLinearLayout;
private RelativeLayout mRootLayout;
private Marker mMarker;
private int mRootLayoutHeight;
private int mSmallLayoutHeight;
private int mMarkerWidth = 100;
private int mMarkerHeight = 100;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mRootLayout = (RelativeLayout) findViewById(R.id.root_layout);
mSmallLinearLayout = (LinearLayout) findViewById(R.id.small_bottom_layout);
mMapSupportedFragment = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map_fragment);
mMapSupportedFragment.getMapAsync(MainActivity.this);
}
@Override
public void onMapReady(GoogleMap googleMap) {
mGoogleMap = googleMap;
mRootLayout.post(new Runnable() {
@Override
public void run() {
mRootLayoutHeight = mRootLayout.getHeight();
}
});
mSmallLinearLayout.post(new Runnable() {
@Override
public void run() {
mSmallLayoutHeight = mSmallLinearLayout.getHeight();
}
});
mMarker = mGoogleMap.addMarker(new MarkerOptions()
.position(KYIV)
.icon(getMarkerIcon(mMarkerWidth, mMarkerHeight)));
mGoogleMap.setOnCameraIdleListener(new GoogleMap.OnCameraIdleListener() {
@Override
public void onCameraIdle() {
if (isMarkerOverlayed()) {
// do you magic here:
Toast.makeText(MainActivity.this, "Overlapped", Toast.LENGTH_SHORT).show();
};
}
});
}
private boolean isMarkerOverlayed() {
boolean overlayed = false;
LatLng markerLocation = mMarker.getPosition();
Projection projection = mGoogleMap.getProjection();
Point markerScreenPosition = projection.toScreenLocation(markerLocation);
int smallLayoutTopY = mRootLayoutHeight - mSmallLayoutHeight;
// 0.8 is 80% of marker height
if (markerScreenPosition.y >= smallLayoutTopY + 0.8 * mMarkerHeight &&
markerScreenPosition.y < mRootLayoutHeight) {
overlayed = true;
}
return overlayed;
}
private BitmapDescriptor getMarkerIcon(int width, int height) {
final Drawable iconDrawable = getResources().getDrawable(R.drawable.ic_marker);
final Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bitmap);
iconDrawable.setBounds(0, 0, canvas.getWidth(), canvas.getHeight());
iconDrawable.draw(canvas);
return BitmapDescriptorFactory.fromBitmap(bitmap);
}
}
你有这样的东西:
关于android - (谷歌地图)检查 LatLng 是否在可见区域经度的 80% 以内,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53202464/
我必须用小工具制作 map ,这些小工具从上一点获得电压。我的数据库中有纬度和经度的记录。我使用自定义图标和 windowInfo 在 map 上存储带有标记的小工具,但我想获取上一个点的纬度和经度,
我的任务是查找两个纬度和经度坐标之间的行驶距离。我在[此处][1]找到了此链接,但是,我不确定我是否正确实现了它,因为我收到了错误...... Invalid float: "" GeocodingL
我一直致力于 Android 中的 Google map 服务。我想知道是否有一个实用方法可以给出 LatLng 的方向关于另一个。 我想知道一个点是否在 南还是北 东方还是西方 或两者的组合,各取其
LATLNG 无法将参数类型“LatLng”分配给参数类型“LatLng” The argument type 'LatLng (where LatLng is defined in E:\flutt
目标 知道一个坐标点是否在另外两个坐标之间。 背景 我正在制作一个谷歌地图应用程序,我需要知道某个点是否在两个 LatLng 点(起点和终点)之间。 我正在寻找如下函数: var currentCoo
在行“Location.distanceBetween(LatLng.latitude, LatLng.longitude, circle.getCenter().latitude,circle.ge
我可以使用什么算法/公式来计算距离另一个 LatLng 点 5 米的 LatLng 点?我正在尝试编写一个带有 2 个 LatLng 参数的函数,并让它返回一个 LatLng,该 LatLng 距离第
使用文档示例,我尝试放大特定点。所以我这样做: var latlng = L.latLng(50.5, 30.5); $scope.map.setZoomAround(latlng); $scope.
我有 2 个列表。 double pointY[]={105.45526,105.57364,105.53505,105.45523,105.51962,105.77320} double point
假设我有一个关联的纬度/经度 + 名称的 HashMap,以及一个相同纬度/经度的单独 ArrayList,这些纬度/经度已按距离我当前位置最近的位置排序。如何将 HashMap 排序为与 Array
我需要查明某些 LatLng 是否在 Google map 圈内(其中之一:http://code.google.com/apis/maps/documentation/javascript/over
我正在尝试在当前位置设置标记,因此我尝试将 Location 转换为 LatLng 类: LatLng mCurrentPlace= new LatLng(location.getLatitude()
我正在 Flutter 中使用 Leaflet 完成我的第一个婴儿步骤,因此欢迎耐心和教程 URL 等。 我能找到的每一段示例代码都给了我这个错误: The method 'LatLng' isn't
因此,我开始在我的小应用程序中建立并运行我的 map ,当我尝试放入相机移动时,我遇到了一些小障碍。编译器似乎根本不喜欢 LatLng 类。它给了我这个。 The method LatLng(doub
我正在从 MainActivity 向名为 MapClass 的类发送 IntentService 调用。 MapClass 有一个名为 MapClassInner 的内部类,它计算用户的当前坐标。但
我创建了一个函数来返回纬度和经度。 问题是 alert('outside:') 在 geocoder.geocode 之前触发。 查看this similar example ,这个功能应该工作。
在我更改包名称之前,一切都在我的设备上正常工作...一旦更改 pkg,相机就不会移动到初始 latlng。此外,标记不会显示。 package com.vaishnavismeclass.divyad
我有List有位置(超过 2000 个位置)。每个位置有 100 米的距离。但是列表太大所以我想根据位置优先级过滤一些位置(比如访问最多的位置、著名位置、实体名称、城市名称或其他) 实际上,当用户移动
我在使用 latlng 变量在 Leaflet map 上创建新圆时遇到问题。 我有一个包含和输入半径的表单和一个包含几个位置的选择框,选项如下所示: Place Name 单击保存按钮时,将运行以下
我想在 touchmove 事件(传单 map )中获取触摸点的 LatLng。我没有找到解决这个问题的方法。有什么方法可以获取坐标吗? $(document).on('touchmove', '#m
我是一名优秀的程序员,十分优秀!