使用iPhone 3.0 SDK中的MapKit,可以创建符合MKAnnotation协议的对象.将这些加载到MKMapView非常简单.但是,当用户滚动MKMapView时,是时候加载新的注释了.请求新对象的可能位置是mapView:regionDidChangeAnimated:在更改地图区域时调用,然后使用新注释添加/替换注释.
具体来说,我想查询Core Data以检索当前MKCoordinateRegion(mapView.region)中存在的所有对象,以便我只加载将在屏幕上显示的对象.Core Data中的对象具有纬度和经度属性(CLLocation属性在类'.m/.h中定义,我可以从中手动填充)并将其用于NSPredicate以查找附近的对象.
由于Core Data数据库中存在多少个对象的性质,我们不能将所有对象预加载为注释,否则我们将耗尽内存(并且它会非常慢).
如何仅检索当前mapview边界中具有位置的对象?
我在mapView中创建叠加层,问题是当我再次回到mapsview活动时,我看到我之前创建的叠加层.我试图删除ondestroy方法中的叠加层,它没有帮助.全部,请相信me.heres代码...同样在onCreate()我使用了mapView.invalidate(); 这也没有帮助.我只是想在活动结束时摆脱覆盖.有解决方案吗
@Override
protected void onDestroy(){
super.onDestroy();
stopWorker=true;
mapView.invalidate();
mapView.postInvalidate();
for (int i=0; i<mapView.getOverlays().size(); i++ ) {
mapView.getOverlays().remove(i);
}
Toast.makeText(this,"map destroy ...", Toast.LENGTH_LONG).show();
mapView.getOverlays().clear();
}
Run Code Online (Sandbox Code Playgroud) 见下图.在我的应用程序(使用MapView)中,我想使用这样的默认标记(但具有不同的背景颜色 - 红色,绿色和黄色)和气球.我在哪里可以找到这些图像和气球代码?

有没有办法在Android中像谷歌那样实现谷歌地图的下降引脚/标记动画???
我正在尝试使用MapView该类在我的Android应用程序中显示一个简单的地图.我onCreate在我的活动中使用以下方法:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
try {
MapsInitializer.initialize(this);
} catch (GooglePlayServicesNotAvailableException e) {
Log.e("Address Map", "Could not initialize google play", e);
}
MapView mapView = new MapView(this);
CameraUpdate camPos = CameraUpdateFactory.newLatLng(new LatLng(11.562276,104.920292));
mapView.getMap().moveCamera(camPos);
setContentView(mapView);
}
Run Code Online (Sandbox Code Playgroud)
我有一个NullPointerException,因为该方法mapView.getMap()返回null.不明白为什么,谷歌播放服务显然存在并初始化.
参考这个网站,我建立了MapActivity以下内容:
public class MainActivity extends Activity {
private MapView mapView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mapView = (MapView) findViewById(R.id.map);
mapView.setComponents(new Components());
RasterDataSource datasource = new PackagedRasterDataSource(new EPSG3857(), 11, 12, "t{zoom}_{x}_{y}", getApplicationContext());
RasterLayer mapLayer = new RasterLayer(datasource, 16);
mapView.getLayers().setBaseLayer(mapLayer);
mapView.setFocusPoint(mapView.getLayers().getBaseLayer().getProjection().fromWgs84(47.0f, 9.0f));
//mapView.setZoom(15);
}
@Override
protected void onStart(){
super.onStart();
mapView.startMapping();
}
@Override
protected void onStop(){
mapView.stopMapping();
super.onStop();
}
}
Run Code Online (Sandbox Code Playgroud)
我已将瓷砖放在我的res/raw文件夹中,但是没有显示任何内容.有什么我想念的吗?根据教程,它必须显示一些东西.我还可以提供什么来调试它?xml是一个简单MapView的width和height.
MapToolbar和标记显示在地图上,当点击工具栏时,它会重定向到谷歌地图.我想禁用此功能.
map_view.xml
<com.google.android.gms.maps.MapView
xmlns:map="http://schemas.android.com/apk/res-auto"
android:id="@+id/summary_mv_map"
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_alignParentLeft="true"
android:layout_marginLeft="15dp"
android:layout_marginTop="10dp"
map:liteMode="true"/>
Run Code Online (Sandbox Code Playgroud)
我尝试过:添加mapView.getUiSettings().setMapToolbarEnabled(false),但无法解析getUiSettings().setMapToolbarEnabled().
注意:不想删除标记
如何设置圆角MapView小部件?
这是我的地图视图
<com.google.android.gms.maps.MapView
android:id="@+id/map_view"
android:layout_width="match_parent"
android:layout_height="260dp"
app:liteMode="true"
app:mapType="normal" />
Run Code Online (Sandbox Code Playgroud)
谢谢
I\xe2\x80\x99m 尝试用折线绘制一条线,但 I\xe2\x80\x99m 收到此错误:
\n更新由 AIRMapPolyline\nnull\n管理的视图的属性 \xe2\x80\x98lineCap\xe2\x80\x99 时出错:尝试调用虚拟方法 \xe2\x80\x98void com.google.android.gms.maps.model.. ug(java.util.List) 对空对象引用
\n这是代码:
\n <MapView\n style={styles.map}\n initialRegion={{\n latitude: initialLocation.latitude,\n longitude: initialLocation.longitude,\n latitudeDelta: 0.01,\n longitudeDelta: 0.01\n }}\n >\n <Circle\n center={currentLocation.coords}\n radius={30}\n strokeColor=\'rgba(158, 158, 255, 1.0)\'\n fillColor=\'rgba(0, 0, 255, 0.3)\'\n />\n {drawLine && (\n <MapView.Polyline\n coordinates={locations.map(loc => {\n return {\n latitude: loc.coords.latitude,\n longitude: loc.coords.longitude\n };\n })}\n strokeColor=\'red\'\n strokeWidth={1}\n />\n )}\n </MapView>\n\nRun Code Online (Sandbox Code Playgroud)\n地图绘制正常,圆圈显示正常,但是当我尝试绘制一条线时,它会抛出可怕的错误。
\n对象数组已被检查
\n\nhttps://github.com/rafaelsoteldosilva/maptest
\n会是什么呢?
\n拉斐尔
\n请指导我如何在地图上做动画标记/图钉/叠加图标.我从最近2天尝试了很多,但我没有成功.
提前致谢..
不工作
RES /抽拉/ map_marker.xml
<?xml version="1.0" encoding="utf-8"?>
<animation-list xmlns:android="http://schemas.android.com/apk/res/android"
android:oneshot="false">
<item android:drawable="@drawable/ecall_lowon" android:duration="200" />
<item android:drawable="@drawable/ecall_mediumoff" android:duration="200" />
Run Code Online (Sandbox Code Playgroud)
Java代码
Drawable drawable = this.getResources().getDrawable(R.drawable.map_marker);
MapItemizedOverlay mapItemizedOverlay = new MapItemizedOverlay(drawable, this);
GeoPoint geoPoint1 = new GeoPoint((int)(9.982878 * 1E6), (int)(76.285774 * 1E6));
GeoPoint geoPoint2 = new GeoPoint((int)(9.973928 * 1E6), (int)(76.276824 * 1E6));
OverlayItem overlayItem1 = new OverlayItem(geoPoint1, "Title1", "");
OverlayItem overlayItem2 = new OverlayItem(geoPoint2, "Title2", "");
mapItemizedOverlay.addOverlayItems(overlayItem1);
mapItemizedOverlay.addOverlayItems(overlayItem2);
mapView.getOverlays().add(mapItemizedOverlay);
Run Code Online (Sandbox Code Playgroud)
但没有成功......
我正在尝试使用每个MapView内部实现包含CardViews的RecyclerView.问题是,在自定义适配器中初始化的MapView不会加载,除非您单击它.正如这里已经提到的:Android MapView不会加载,除非您触摸mapview, 您可以通过覆盖onResume()来解决问题.我试过以下方式:
@Override
public void onResume() {
if(LocationsAdapter.ViewHolder.mapView != null) {
LocationsAdapter.ViewHolder.mapView.onResume();
}
super.onResume();
}
Run Code Online (Sandbox Code Playgroud)
老实说,我根本不知道如何以任何其他方式覆盖onResume,如果我在这里打破了某些编程规则,请原谅我.我将mapView作为在LocationsAdapter中创建的ViewHolder中的公共静态.这似乎不起作用,地图仍然是空白.
Adapter内的ViewHolder实现了OnMapReadyCallback.
public static class ViewHolder extends RecyclerView.ViewHolder implements OnMapReadyCallback
...
@Override
public void onMapReady(GoogleMap googleMap) {
this.googleMap = googleMap;
Location location = locations.get(getAdapterPosition());
this.googleMap.addMarker(new MarkerOptions().position(location.getLatlng()).title(location.getName()));
this.googleMap.moveCamera(CameraUpdateFactory.newLatLng(location.getLatlng()));
this.googleMap.animateCamera(CameraUpdateFactory.newLatLngZoom(location.getLatlng(), 7.0f));
}
Run Code Online (Sandbox Code Playgroud)
调用ViewHolder时会调用这两个方法.
mapView.onCreate(null);
mapView.getMapAsync(this);
Run Code Online (Sandbox Code Playgroud)
另一篇提到这个问题的文章还没有答案:cardview里面的mapView没有加载地图.
我的目标是,无论片段当前处于什么生命周期,都要加载映射.我假设您不需要适配器,片段和XML来解决此问题.如果你这样做,请告诉我.
android android-mapview google-maps-android-api-2 android-recyclerview
android-mapview ×11
android ×9
android-maps ×1
cartodb ×1
core-data ×1
google-maps ×1
iphone ×1
mapping ×1
maps ×1
nutiteq ×1
overlays ×1
react-native ×1
reactjs ×1