<fragment xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:map="http://schemas.android.com/apk/res-auto"
android:id="@+id/map"
android:layout_width="match_parent"
android:layout_height="match_parent"
class="com.google.android.gms.maps.SupportMapFragment"
map:cameraBearing="270"/>
google开发人员文档中的描述是:
公共静态CameraUpdate newLatLngBounds(LatLngBounds bounds,int padding)(...).返回的CameraUpdate的方位为0,倾斜度为0。(...)“。
如何更改轴承值?
mMap.moveCamera(CameraUpdateFactory.newLatLngBounds(bounds, 100));
mMap.moveCamera(CameraUpdateFactory.newCameraPosition(new CameraPosition.Builder()
.target(mMap.getCameraPosition().target)
.zoom(mMap.getCameraPosition().zoom)
.bearing(270)
.build()));
我有一个替代方案,我也有同样的问题。我将展示如何将边界转换为缩放,然后我们将简单地使用cameraposition.builder()来创建正确的位置。
private static final double LN2 = 0.6931471805599453;
private static final int WORLD_PX_HEIGHT = 256;
private static final int WORLD_PX_WIDTH = 256;
private static final int ZOOM_MAX = 21;
public int getBoundsZoomLevel(LatLngBounds bounds, int mapWidthPx, int mapHeightPx){
LatLng ne = bounds.northeast;
LatLng sw = bounds.southwest;
double latFraction = (latRad(ne.latitude) - latRad(sw.latitude)) / Math.PI;
double lngDiff = ne.longitude - sw.longitude;
double lngFraction = ((lngDiff < 0) ? (lngDiff + 360) : lngDiff) / 360;
double latZoom = zoom(mapHeightPx, WORLD_PX_HEIGHT, latFraction);
double lngZoom = zoom(mapWidthPx, WORLD_PX_WIDTH, lngFraction);
int result = Math.min((int)latZoom, (int)lngZoom);
return Math.min(result, ZOOM_MAX);
}
private double latRad(double lat) {
double sin = Math.sin(lat * Math.PI / 180);
double radX2 = Math.log((1 + sin) / (1 - sin)) / 2;
return Math.max(Math.min(radX2, Math.PI), -Math.PI) / 2;
}
private double zoom(int mapPx, int worldPx, double fraction) {
return Math.floor(Math.log(mapPx / worldPx / fraction) / LN2);
}
然后您可以使用此代码并添加一个带有边界的方位/和或倾斜:
LatLngBounds bounds = LatLngBounds.builder()
.include(swCorner)
.include(neCorner).build();
CameraPosition cp = new CameraPosition.Builder()
.bearing(randomBearing())
.tilt(randomTilt())
.target(latLng)
.zoom(getBoundsZoomLevel(bounds, findViewById(R.id.map).getMeasuredWidth(), findViewById(R.id.map).getMeasuredHeight()))
.build();
CameraUpdate cu = CameraUpdateFactory.newCameraPosition(cp);
mMap.animateCamera(cu);
这将起作用(您必须将mMap更改为您的实际map变量,并将id更改为您的map id)。
我想从复杂映射中读取值,并并行执行一个函数。为此,我使用了Java 8中的ForkJoinPool。 我在这里面临的问题是,对于少数值,函数执行两次。起初我认为,Hashmap不是线程安全的,所以我尝试使用HashTable,但它是相同的。。。
所以我看到了一个特殊的例外,我敢肯定的是谷歌地图的绘图代码。 我有一个片段,在那里我以编程方式添加了一个支持地图片段,然后我在其中操纵谷歌地图实例。 这是stacktrace: 我无法可靠地复制它(尽管这种情况经常发生),我已经查看了ReadWriteDirectByteBuffer和ShortToByteBufferAdapter,但没有任何东西突然出现在我面前。 有什么想法吗?
问题内容: 我想做一个需要集成Google MapsAPI的项目。我需要自动完成,本地化并在地图上绘制路线。我该如何用angular做到这一点,您可以为此推荐一个库吗?或者我该如何使用javascript的GoogleMapsAPI做到这一点。该项目是使用yeoman-fullstack生成的。 谢谢。 问题答案: 首先,如果您想让 AngularJS使用* Google Maps API ,则有
在一些应用场景中,有时需要绘制两个 x 轴或两个 y 轴,这样可以更直观地显现图像,从而获取更有效的数据。Matplotlib 提供的 twinx() 和 twiny() 函数,除了可以实现绘制双轴的功能外,还可以使用不同的单位来绘制曲线,比如一个轴绘制对函数,另外一个轴绘制指数函数。 下面示例绘制了一个具有两个 y 轴的图形,一个显示指数函数 exp(x),另一个显示对数函数 log(x)。 输
双轴图表用于显示两种不同图表类型中的两种不同度量。需要一个日期列和两个度量来构建双轴图表。 图表中使用了不同的比例,帮助用户理解这两个度量。创建双轴图表的过程如下面给出的步骤。 例如,考虑一个数据源:Sample-Superstore 及其度量和维度。 第1步:转到工作表。 第2步:按住键盘上的Ctrl键。 第3步:选择维度OrderDate,测量销售额(Sales)和数量(Quantity),如
但它不适用于以下内容:https://maps.googleapis.com/maps/api/directions/json?origin=32,52&destination=34,54&key=aizasybvr07afm-1ddgvgt392lrnuge3wet6nuy