我正在尝试让缩放控件显示在a中mapview,以下代码几乎可以正常工作,但缩放控件显示在左上角,而mapview不是像我指定的那样通过底部中心setGravity().有人可以告诉我我错过了什么吗?
zoomView = (LinearLayout) mapView.getZoomControls();
zoomView.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,ViewGroup.LayoutParams.WRAP_CONTENT));
zoomView.setGravity(Gravity.BOTTOM | Gravity.CENTER_HORIZONTAL);
mapView.addView(zoomView);
Run Code Online (Sandbox Code Playgroud)
这些视图/布局都是以编程方式构建的,没有要调整的布局文件.
我已经扩展了Overlay并实现draw()了以便在地图上绘制一些东西.完成缩放mapController.zoomIn()(双击地图时调用),叠加层将正确绘制到地图上.
但是每当我使用内置的变焦控制器放大/缩小时,叠加都没有正确绘制,并且需要平移地图才能刷新叠加层.
我只是按照一个简单的地图教程http://developer.android.com/resources/tutorials/views/hello-mapview.html但收到此错误.我是android的新手我试图遵循通过互联网提供的所有解决方案,但还没有成功.请帮我.我的主要.xml在下面
<?xml version="1.0" encoding="utf-8"?>
<com.google.android.maps.MapView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/mapview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:clickable="true"
android:apiKey="***"
/>
Run Code Online (Sandbox Code Playgroud)
和manifestfile就是这个
目前,我可以使用Android Google Maps API v2在Google地图中查看我的所有标记.
在地图中添加我的标记:
mapView.addMarker
(new MarkerOptions()
.position(aUsersLocation).
icon(BitmapDescriptorFactory.fromBitmap(aUserImage))
.snippet(My_VALUE_1)
.title(My_VALUE_2)
.hideInfoWindow();
Run Code Online (Sandbox Code Playgroud)
我有几个标记,并为每个标记的代码段和标题指定了几个值(My_VALUE_1和My_VALUE_2).当用户点击标记时,我需要这些唯一值,我将在onMarkerClick监听器中收到以下值:
@Override
public boolean onMarkerClick(Marker theMarker)
{
String aValue1 = theMarker.getSnippet();
String aValue2 = theMarker.getTitle();
theMarker.getPosition().latitude...
...
return false;
}
Run Code Online (Sandbox Code Playgroud)
我的问题是:当我将标题和标题值添加到标记时,当用户单击标记时,会显示infoWindow.
我需要隐藏标记的infoWindow.我尝试使用hideInfoWindow,但似乎无法正常工作.
请给我任何建议.
谢谢.
android google-maps android-maps android-mapview android-maps-v2
我正在使用OSMdroid库开发一个离线mapView.我的tilesource加载了tile,但渲染稳定.但事实是在我的日志消息中,我不断收到此错误:
GC_FOR_ALLOC freed 6346K, 7% free , paused 143ms, total 143ms
我不确定如何调试这个?任何想法,我有任何内存泄漏?
有没有办法在MapView上始终显示缩放控件?我已经添加了缩放控件
map=(MapView)findViewById(R.id.map);
map.setBuiltInZoomControls(true);
Run Code Online (Sandbox Code Playgroud)
但缩放控件淡入和淡出.我希望它们始终可见.
修复这里是我的解决方案:
编辑:更新以反映robguinness答案.
import com.google.android.maps.GeoPoint;
import com.google.android.maps.MapView;
import com.google.android.maps.Overlay;
import com.google.android.maps.Projection;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Point;
public class CircleOverlay extends Overlay {
Context context;
double mLat;
double mLon;
float mRadius;
public CircleOverlay(Context _context, double _lat, double _lon, float radius ) {
context = _context;
mLat = _lat;
mLon = _lon;
mRadius = radius;
}
public CircleOverlay(Context _context, double _lat, double _lon, float radius ) {
context = _context;
mLat = _lat;
mLon = _lon;
mRadius …Run Code Online (Sandbox Code Playgroud) 我有以下问题:
我有一个"绘制的地图"(图像),我作为叠加添加到MapView.有没有问题..但我需要的MapView限制在覆盖的区域,因此用户不能滚动/缩放这个区域之外..但它应该可以滚动/变焦的"边界内"覆盖 - 意味着我不能只为MapView禁用缩放/滚动.
关于这个主题有什么想法/解决方案吗?使用MapView/-Kit的原因是我需要将各种POI添加到自定义地图.仅使用ImageView + ScrollView呈现自定义地图时,这可能会变得更加复杂.
我已经研究了很多这个主题,但我没有找到一个很好的解决方案.
任何帮助表示赞赏!
最诚挚的问候,基督徒
编辑:这是我们的解决方案: 您提供了一个topleft和一个底部坐标来限制地图.(最小)缩放级别也是有限的.我已经停用减速功能,你可以从地图中弹出一点(为了更好的性能/ ux).我在叠加层上添加了一个〜1km的灰色边框,因此用户无法看到谷歌的原始世界地图.
LimitedMapView.h:
#import <Foundation/Foundation.h>
#import <MapKit/MapKit.h>
@interface LimitedMapView : MKMapView <UIScrollViewDelegate>{
}
@property (nonatomic, assign) CLLocationCoordinate2D topLeftCoordinate;
@property (nonatomic, assign) CLLocationCoordinate2D bottomRightCoordinate;
@end
Run Code Online (Sandbox Code Playgroud)
LimitedMapView.m:
#import "LimitedMapView.h"
@implementation LimitedMapView
@synthesize topLeftCoordinate, bottomRightCoordinate;
- (void)scrollViewDidZoom:(UIScrollView *)scrollView{
if([super respondsToSelector:@selector(scrollViewDidZoom:)]) [super scrollViewDidZoom:scrollView];
if ([self region].span.latitudeDelta > 0.002401f || [self region].span.longitudeDelta > 0.003433f) {
CLLocationCoordinate2D center = self.centerCoordinate;
MKCoordinateSpan span = MKCoordinateSpanMake(0.002401f, 0.003433f);
self.region = MKCoordinateRegionMake(center, span);
}
}
-(void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate{
if([super …Run Code Online (Sandbox Code Playgroud) 我想在片段内添加自定义布局的地图.
onCreateView mapView = super.onCreateView(inflater, container, savedInstanceState);
并将其插入到膨胀的布局中.主要问题是,然后片段尝试从保存状态恢复谷歌地图SDK内部粉碎.
有没有其他方法可以解决这个问题.如果谷歌地图团队的某个人会推荐正确的方法会很好,因为你没有在样本中加入这样的东西.
MapView的getMap()方法可以返回null.我知道这是Google的预期行为.
有人可以提供关于何时以及在何种情况下该方法返回null 的明确描述getMap()?
我知道如果Google服务在给定设备上不可用,getMap()则会返回null.这种可能性相对较好地记录在案.我更关注模糊的其他情况,即使在设备上安装Google服务,getMap()仍然可以返回null.
到目前为止,我的假设是底层地图系统有一些初始化,在此期间您的代码可能会执行并获得一个空地图.
我的假设是否正确?
在Activity或Fragment生命周期中是否有任何特定的位置我们可以明确地获得非null GoogleMap(如果我们假设安装了Google Services IS)?
我提出这个问题的目的是防止if(mapView.getMap() != null)在我的代码中散布一连串的支票.此外,这个问题似乎依然拿出定期在这里StackOverflow上,我想看看我们是否能够割肉出局的背后究竟是怎么回事用真情MapView和getMap()
android-mapview ×10
android ×9
android-maps ×2
google-maps ×2
inflate ×1
ios ×1
iphone ×1
map ×1
mapkit ×1
overlay ×1
performance ×1
region ×1
zoom ×1