我已在Android应用程序中将Google Maps v1升级到v2.
而v2很不错,但是一种方法似乎是我生命中最慢的方法.
Projection proj = map.getProjection();
Point point = proj.toScreenLocation(example.m_geopoint);
Run Code Online (Sandbox Code Playgroud)
toScreenLocation(...)是如此之慢,因此应用程序减慢到无法使用的慢动作.该方法每帧更新可能100次,但在Google Maps v1上的效果非常好.
当我在Android Console中检查时,我看到了这个:
10-06 13:53:04.460: D/dalvikvm(4889): GC_EXPLICIT freed 251K, 14% free 14622K/16839K, paused 3ms+5ms
10-06 13:53:05.859: D/dalvikvm(4889): GC_EXPLICIT freed 252K, 14% free 14622K/16839K, paused 2ms+5ms
10-06 13:53:07.222: D/dalvikvm(4889): GC_EXPLICIT freed 251K, 14% free 14622K/16839K, paused 3ms+6ms
...
Run Code Online (Sandbox Code Playgroud)
调用该方法时,此消息始终显示.
v2和v1之间的区别是:
pointOut = proj.toScreenLocation(geopointIn); // v2
projection.toPixels(geopointIn, pointOut); // v1
Run Code Online (Sandbox Code Playgroud)
而v1似乎是更优化的解决方案.有没有办法让它更快?这是性能错误吗?
单击标记时,会出现一个气球.但是在标记和气球之间有太大的空间,所以我怎么能减少这个距离?这就像使用中的setBalloonBottomOffset方法V1 Google Map.
我custom balloon是这堂课:
public class CustomInfoWindowAdapter implements InfoWindowAdapter {
private final View mWindow;
private final View mContents;
public CustomInfoWindowAdapter(Activity activity) {
LayoutInflater inflater = (LayoutInflater) activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
mWindow = inflater.inflate(R.layout.ballon, null);
mContents = inflater.inflate(R.layout.ballon, null);
}
@Override
public View getInfoWindow(Marker marker) {
render(marker, mWindow);
return mWindow;
}
@Override
public View getInfoContents(Marker marker) {
render(marker, mContents);
return mContents;
}
private void render(Marker marker, View view) {
String title = marker.getTitle();
TextView titleUi = ((TextView) …Run Code Online (Sandbox Code Playgroud) 我有一个需要Google Play服务的应用程序,因为我使用的是Android Maps v2.
我正在运行一些测试,一个测试需要恢复出厂设置,并尝试运行该应用程序.
我第一次这样做,没有连接wifi或任何互联网来源,地图上显示的消息是:

当我点击这个"确定"按钮时,我的应用程序崩溃了.日志:

当我连接到互联网时,此消息更改,显示的按钮是"更新",然后我只需单击,所有工作按预期方式.
我可以在Ok Button上处理这个事件吗?Ny提示?
谢谢!
我使用几个纬度,经度点在谷歌地图上绘制了一个多边形.但是现在我需要在多边形的中心放置一个标记,我需要中心坐标.如何计算中心点.
以下是在地图上添加多边形的代码:
for (Warning w : warningsList) {
// Instantiates a new Polygon object and adds points
PolygonOptions rectOptions = new PolygonOptions();
List<PolyPoints> pp = w.getPolyPoints();
for (PolyPoints p : pp) {
rectOptions.add(new LatLng(Double.valueOf(p.getLatitude()),
Double.valueOf(p.getLongitude())));
}
mMap.addPolygon(rectOptions.strokeColor(Color.GREEN)
.fillColor(Color.RED).strokeWidth(STROKE_WIDTH));
}
Run Code Online (Sandbox Code Playgroud)
我发现了类似的问题已经得到解答,但是对于JavaScript Api.Is他们在我的情况下使用相同的解决方案吗?
我想在我的android地图应用程序中显示如下所示的标记.我知道我必须为此使用自定义标记我也计算了角度,但我不知道如何在标记上显示箭头.
任何指针都会有所帮助,并提前致谢.
http://i43.tinypic.com/zkmukw.png
关心巴拉特
我正在尝试将瓷砖叠加层和多边形线绘制到谷歌地图上.我希望多边形线渲染在瓷砖覆盖层的顶部,以便可以看到它.目前它是在瓷砖覆盖下绘制并消失,我的代码如下:
// Draw the tile overlay
NBUrlTileProvider tileProvider = new NBUrlTileProvider(url, 256, 256);
TileOverlayOptions tileOverlayOptions = new TileOverlayOptions()
.tileProvider(tileProvider)
.fadeIn(true);
mMap.addTileOverlay(tileOverlayOptions);
// Draw the poly line
PolylineOptions polyLineOptions = new PolylineOptions();
polyLineOptions.width(5).geodesic(true).color(Color.rgb(255, 0, 255));
polyLineOptions.add(location1);
polyLineOptions.add(location2);
polyLineOptions.add(location3);
mMap.addPolyline(polyLineOptions);
Run Code Online (Sandbox Code Playgroud)
任何帮助都会非常感激,我认为默认情况下,多边形线条会被绘制在瓷砖叠加层之上,我还需要添加什么额外的东西吗?
我正在模拟在Android地图v2上预先录制的路径上行驶的汽车.当我用手放大路径时,效果很好,但是当我将摄像机移到路径上时mMap.animateCamera(),它不会加载可见的地图区域,我只会得到一个非常像素化的低质量地图.如果我触摸屏幕并移动地图或缩放一点,那么它会再次加载此部分.
我怎样才能实现,它总能清楚地加载可见部分?
编辑: 我添加了一个示例图像:这是我在不触摸地图时看到的内容.触摸后,它变得清晰(类似于左下角部分).

编辑2: 我有一个想法,这是因为谷歌希望通过快速移动相机在一个区域上来防止地图被缓存.这可能是导致这个问题的原因吗?(地图显示匈牙利布达佩斯,你无法下载哪部分地图供离线使用......)但在这里我只想展示动画并放置标记,我只需要显示可见区域 - 是否有有什么方法可以解决这个问题?
EDIT3: 动画代码:
new Thread(new Runnable() {
@Override
public void run() {
// ... Calculating and sending new location, in an infinite loop with sleeps for timing
MainActivity.this.runOnUiThread(new Runnable() {
@Override
public void run() {
mMap.animateCamera(CameraUpdateFactory.newLatLng(new LatLng(location.getLatitude(), location.getLongitude())));
}
});
}
}).start();
Run Code Online (Sandbox Code Playgroud) 我正在开发 Android 应用程序并跟踪用户移动。我想在用户移动时为相机设置动画(在每次 onLocationChange 调用时)。首先,我是这样做的,而且效果很好:
map.moveCamera(CameraUpdateFactory.newLatLng(new LatLng(location
.getLatitude(), location.getLongitude())));
Run Code Online (Sandbox Code Playgroud)
这是使用此代码片段时的屏幕截图:
但正如你所看到的,这不是动画,所以我写了这样的:
CameraPosition cameraPosition = new CameraPosition.Builder()
.zoom(zoom)
.target(new LatLng(location.getLatitude(), location
.getLongitude())).build();
map.animateCamera(CameraUpdateFactory.newCameraPosition(cameraPosition));
Run Code Online (Sandbox Code Playgroud)
但它工作得不好,地图随着动画移动,但街道模糊,街道名称不可见(看截图):

我也尝试过没有缩放的动画 - 相同的结果。只有当我按下缩放按钮后,地图才会变得清晰,但某些点和路线仍然模糊。那么有什么想法如何解决这个问题吗?提前致谢!
像这样在xml中膨胀我的Mapview
<android.support.v4.widget.NestedScrollView
android:id="@+id/sv_offers"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="56dp"
android:visibility="gone"
app:layout_behavior="@string/appbar_scrolling_view_behavior">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<com.xys.widgets.CustomMapView
android:id="@+id/mapView"
android:layout_width="match_parent"
android:layout_height="125dp"/>
</LinearLayout>
</android.support.v4.widget.NestedScrollView>
Run Code Online (Sandbox Code Playgroud)
我已经实现了自定义Mapview如下: -
public class CustomMapView extends MapView {
private ViewParent mViewParent;
public CustomMapView(Context context) {
super(context);
}
public CustomMapView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public CustomMapView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
public void setViewParent(@Nullable final ViewParent viewParent) { //any ViewGroup
mViewParent = viewParent;
}
public CustomMapView(Context context, GoogleMapOptions options) {
super(context, options);
}
@Override
public …Run Code Online (Sandbox Code Playgroud) android google-maps android-layout google-play-services android-maps-v2
一张图片描述了一千多个单词,所以我用我糟糕的 Gimp 技能创建了下面的草图。
中间的图标是用户当前的位置,周围的标记是附近的位置。黑色方块表示用户在当前缩放级别下可以在地图上看到的内容,但这仅显示 2 个地点。
所以我的问题是:
是否有任何内置方法可以在外部屏幕区域显示某种指示器,以便用户可以看到当前屏幕上可见区域之外的附近位置。如果这些指示器能够显示未显示在正方形内但显示在给定半径内的标记,那就太好了。
如果没有内置方法,我应该研究什么来解决这个问题?
android ×10
android-maps-v2 ×10
google-maps ×4
android-maps ×1
caching ×1
java ×1
performance ×1
polyline ×1