我的搜索中没有找到答案,有几个答案,但它们对我不起作用.
我在地图上有2个标记,我正在使用LatLngBounds构建器,以便让相机缩放到正确的缩放级别以包含它们.一切都按预期工作,除了一件事,当2个标记真的很接近时,地图非常非常放大,很好,这种缩放水平没有任何意义.
LatLngBounds.Builder builder = new LatLngBounds.Builder();
builder.include(firstMarker.getPosition());
builder.include(secondMarker.getPosition());
LatLngBounds bounds = builder.build();
CameraUpdate cu = CameraUpdateFactory.newLatLngBounds(bounds, markerPadding);
Run Code Online (Sandbox Code Playgroud)
有没有办法强制一定程度的变焦,之后相机不会变焦?这样可以避免地图放大/缩小.基本上我使用15.0f作为缩放级别.如果点太远,我希望变焦适合它们.如果点越来越近,我不希望缩放级别超过15.0f.
看这个插图:

我想知道的是:
如果您能使用Google Maps API V2为我提供Java代码示例或专门针对Android的代码示例,我更愿意
java android area latitude-longitude google-maps-android-api-2
我目前正在玩TileProverAndroid Maps API v2,并且遇到了以下问题:我手动绘制到Bitmap中的图形在更高的缩放级别上显着偏斜:

让我解释一下我在这做什么.我有多个LatLng点,我为地图上的每个点画一个圆圈,这样当你放大时 - 点停留在同一个地理位置.正如您在屏幕截图中看到的那样,圆圈在较低的缩放级别上看起来很好,但是当您开始放大时 - 圆圈会变得偏斜.
这就是它的实现方式:
package trickyandroid.com.locationtracking;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Matrix;
import android.graphics.Paint;
import android.util.Log;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.Tile;
import com.google.android.gms.maps.model.TileProvider;
import com.google.maps.android.geometry.Point;
import com.google.maps.android.projection.SphericalMercatorProjection;
import java.io.ByteArrayOutputStream;
/**
* Created by paveld on 8/8/14.
*/
public class CustomTileProvider implements TileProvider {
private final int TILE_SIZE = 256;
private int density = 1;
private int tileSizeScaled;
private Paint circlePaint;
private SphericalMercatorProjection projection;
private Point[] points;
public CustomTileProvider(Context context) {
density …Run Code Online (Sandbox Code Playgroud) 目前在我的应用程序中,通过一个一个地绘制每个多边形正方形并用颜色填充它,在地图上绘制了一个“网格”。然后,我将多边形对象添加到地图中,以便稍后根据需要进行修改。
我只创建每个多边形一次,但是我添加的越多(可能数以万计),就会出现主要的一致“滞后”和低帧速率,最终破坏了应用程序。
这是创建每个“Square”并将其添加到哈希图的代码的当前部分。
double latScale = 0.000180;
double lngScale = 0.000288;
PolygonOptions po = new PolygonOptions()
.add( new LatLng(lat, lng),
new LatLng(lat, lng + lngScale),
new LatLng(lat - latScale, lng + lngScale),
new LatLng(lat - latScale, lng))
.strokeWidth(3f)
.strokeColor(Color.argb(220, 0, 0, 0));
if (colors.containsKey(color)){
po.fillColor(colors.get(color));
}
else{
po.fillColor(colors.get("default"));
}
gridSquares.put(square_id, mMap.addPolygon(po));
Run Code Online (Sandbox Code Playgroud)
我的问题是,究竟是什么导致它滞后这么多(我意识到它一定是绝对数量,但我需要细节,重新绘制每一帧?内存?)我怎么能在某些情况下满足我对这个巨大网格覆盖的需求?不那么滞后的方式。要么用我目前的思路,要么用一种新的方式。
如果需要更多说明,请询问。
我想利用的SVGTileProvider是在发现谷歌IO 2013的应用程序.我无法弄清楚如何在谷歌地图上定位图像.我把它缩小到了课程的这一部分.这些不是纬度/经度坐标,但不管怎样它们必须来自纬度/经度坐标.有谁知道这些是什么或它们来自哪里?
mBaseMatrix.setPolyToPoly(
new float[]{
0, 0,
limits.width(), 0,
limits.width(), limits.height()
}, 0,
new float[]{
40.95635986328125f, 98.94217824936158f,
40.95730018615723f, 98.94123077396628f,
40.95791244506836f, 98.94186019897214f
}, 0, 3);
Run Code Online (Sandbox Code Playgroud)
更新
第一组神秘数字大致翻译为纬度/经度37.783887,-122.405107.
更新2
这些方法可以帮助我将纬度转换为y值,反之亦然.我如何为X和经度做这个?
public static double y2lat(double aY) {
return Math.toDegrees(2 * Math.atan(Math.exp(Math.toRadians(aY))) - Math.PI / 2);
}
public static double lat2y(double aLat) {
return Math.toDegrees(Math.log(Math.tan(Math.PI / 4 + Math.toRadians(aLat) / 2)));
}
Run Code Online (Sandbox Code Playgroud)