我试图阻止用户在谷歌地图的某个区域之外移动。然而,似乎没有一种简单的方法来做到这一点。第一次在这里求你发发慈悲吧。
我尝试了以下方法,试图在用户滚动时进行轮询,但问题是OncamaChange触发的频率不够,因此它的工作不稳定且不准确。我知道一定有某种方法可以做到这一点,因为它似乎是一个简单而基本的功能。
private static final LatLng NEBOUND = new LatLng(47.670606, -117.393344);
private static final LatLng SWBOUND = new LatLng(47.661283, -117.411052);
private static final LatLngBounds MAPBOUNDARY = new LatLngBounds(SWBOUND, NEBOUND);
private LatLng lastCenter = new LatLng(47.667454, -117.402309);
private final OnCameraChangeListener mOnCameraChangeListener =
new OnCameraChangeListener() {
@Override
public void onCameraChange(CameraPosition cameraPosition) {
LatLngBounds visibleBounds = guMap.getProjection().getVisibleRegion().latLngBounds;
if(!MAPBOUNDARY.contains(visibleBounds.northeast) || !MAPBOUNDARY.contains(visibleBounds.southwest)){
guMap.moveCamera(CameraUpdateFactory.newLatLng(lastCenter));
}
else
lastCenter = guMap.getCameraPosition().target;
centerLoc.setText(lastCenter.toString());
}
};
您可以尝试使用旧的轮询技术,而不是使用新的闪亮的推送技术,即onCamamaChange
,map.getCamamaPotion()。
基本上您需要一个Handler
,它将在handleMessage
中获取相机位置的值,并且您每隔10ms左右向此处理程序发送消息。在handleMessage
dosendemptyMessageDelayed
中。
您还可以使用Runnable
代替Message
(但这是品味问题)。
由于MaciejGórski的轮询,即使在5ms时,我也实现了这个解决方案,这相当不稳定,但值得注意的是,根据您的边界形状和用户屏幕的形状,他们可能无法缩小到足够远,无法查看整个区域。
private static final LatLng NEBOUND = new LatLng(47.671781, -117.393352);
private static final LatLng SWBOUND = new LatLng(47.661283, -117.411052);
private static final LatLngBounds MAPBOUNDARY = new LatLngBounds(SWBOUND, NEBOUND);
private LatLng lastCenter = new LatLng(47.667454, -117.402309);
GoogleMap guMap;
private Handler mHandler;
private void checkBoundaries(){
LatLng tempCenter = guMap.getCameraPosition().target;
LatLngBounds visibleBounds = guMap.getProjection().getVisibleRegion().latLngBounds;
if(!MAPBOUNDARY.contains(visibleBounds.northeast) || !MAPBOUNDARY.contains(visibleBounds.southwest)){
guMap.moveCamera(CameraUpdateFactory.newLatLng(lastCenter));
}
else
lastCenter = tempCenter;
}
private void setUpHandler(){
mHandler = new Handler(){
public void handleMessage(Message msg){
checkBoundaries();
sendEmptyMessageDelayed(0, 5);
}
};
}
问题内容: 我有一个可用作地图键的类型,但我想防止这种情况的发生。我以为如果该类型包含一个私有成员,则其他软件包将无法实现,但这似乎仍然可行。使类型不能用作映射键的最佳方法是什么? 问题答案: 我认为禁止将类型用作键没有任何好处。它只是一个可能会使用或可能不会使用的选项,其类型不会因为您禁止将其用作地图键而变得更好,更小或更快。 但是,如果您想这样做:规格:地图类型: 该比较操作符 ==和=必须为
问题内容: 给定当前的CSS网格示例,如何折叠边框以避免出现双边框? 这是使用Html表实现的如此简单的事情。如何使用? 问题答案: 您可能会这样: 另一个想法是依靠渐变来填补空白,如下所示: 您还可以调整初始解决方案以使其更加灵活,并且可以在一行中处理任意数量的项目。 在整个页面上运行以下代码并调整窗口大小:
问题内容: 如果使用此代码,则div的圆角不会剪切图像(结果是图像的方形角覆盖了div的圆角): 有谁知道如何获得一个圆形的div来防止子图像溢出? 问题答案: 这可能会或可能不会在您遇到的情况下起作用,但请考虑使图像成为CSS背景。在FF3中,以下工作正常: 我不确定还有另一种解决方法-如果您对图像本身应用边框(例如,较深),则会遇到同样的方形角问题。 编辑: 尽管在“为图像添加边框”情况下,图
问题内容: 有没有办法用javascript / jquery防止图像加载?我正在从带有图像的html列表构建幻灯片。因此,我想收集所有src数据,然后阻止加载图像。因此,稍后当用户真正需要图像时,我便会加载它。 我在Google上找到了一些延迟加载脚本,但找不到阻止图像加载的方式。 提前致谢。 Edit1: 从答案看来,不可能使用javascript来防止图像加载。 这是一个执行延迟加载的脚本。
出于学习目的,我正在使用OAuth2开发一个REST API Angular 4应用程序。 有些受保护的endpoint只能由经过身份验证的用户调用。让我们以更新用户配置文件的endpoint为例: /users/{user_id} 登录用户将能够通过转到更新配置文件屏幕来更新自己的配置文件,该屏幕在后台将调用 /users/{user_id}发送带有新信息和访问令牌的有效载荷。 我们如何防止恶意
我正在写一个小程序,可以处理大的(最多无限个)文本文件。处理过程将相当简单(将部分内容修剪并处理成单独的字符串,然后打印出来)。然而,由于数据的长度可能是无限的,我可能会遇到超过堆的问题。我想到的第一个解决方案是使用流来处理数据。然而,Files类中的lines()方法只能将文本分成行。我的线条也可以无限长! 我遇到的另一个解决方案是使用scanner useDelimiter方法: 这种方法会阻