嗨,我有一个有很多标记的地图.当我将标记添加到地图时,我想为每个标记添加一个onInfoWindowClick监听器和单独的数据.我想用onInfoWindowClick Listener加载带有标记信息的活动.
代码不正确.创建activety时,所有侦听器都会同时触发,当我单击infoWindow时,没有任何反应.
private void addMarkerToMap(double lat, double lng, String eventTitle,
String eventDiscribtion) {
Marker currentMarker = myMap.addMarker(new MarkerOptions()
.position(new LatLng(lat, lng)).title(eventTitle)
.snippet(eventDiscribtion));
onInfoWindowClick(currentMarker);
}
@Override
public void onInfoWindowClick(Marker marker) {
Intent nextScreen = new Intent(MapsActivity.this,
EventActivity.class);
nextScreen.putExtra("userId", "" + userId);
nextScreen.putExtra("eventId", "" + eventId);
startActivityForResult(nextScreen, 0);
}
Run Code Online (Sandbox Code Playgroud) 我在地图中动态添加非固定数量的标记,每个标记都与我的POCO类的一个实例相关.
我需要链接它们,以便当用户点击其中一个标记时,我会在自定义InfoWindow中显示其余数据.
你有什么建议?
PS:我每次用户平移或缩放地图时添加新标记,我担心应用程序过载.是否放置了不可见的标记?
Google最终在Android API v2中添加了位置更改回调!但是,我无法直观地将其用于工作,Google也没有太多文档.有没有人让它上班?我还需要什么?
public class ... extends SupportMapFragment implements GoogleMap.OnMyLocationChangeListener {
GoogleMap map;
LocationManager locationManager;
String provider;
@Override
public void onActivityCreated(android.os.Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
map = getMap();
if (map != null) {
Criteria criteria = new Criteria();
criteria.setAccuracy(Criteria.ACCURACY_FINE);
locationManager =(LocationManager)getActivity().getSystemService(Context.LOCATION_SERVICE);
provider = locationManager.getBestProvider(criteria, false);
}
}
@Override
public void onResume() {
super.onResume();
while(map == null) {
map = getMap();
map.setMyLocationEnabled(true);
map.setOnMyLocationChangeListener(this);
}
}
@Override
public void onMyLocationChange(Location loc) {
//implementation
}
}
Run Code Online (Sandbox Code Playgroud) 我有一个应用程序,用户可以在Google地图上加载图像.这是为2.3开发的,所以有一个MapActivity,一个MapView和我的自定义Overlay类来显示图像.在overlay class draw-method中,我每次都重新计算一次Matrix,因此图像的大小和位置正确.我还有一个校准模式,用户可以通过拖动参考点来调整图像.
我将为应用程序添加一些功能,我想从使用片段等一些更新开始.用MapFragment替换MapActivity会带来一些问题,因为似乎没有任何支持你可以自己实现绘图的覆盖.好像我将不得不使用GroundOverlays或TileOverlay.(如果我错了,请纠正我.)
在添加叠加后,这些似乎都不支持对叠加的任何修改,因此图像的校准将不起作用.我对该部分的计划是将普通的ImageView放在MapFragment的顶部以进行校准模式.(这将隐藏所有标记,但在校准期间无关紧要.)为此,我需要做两件事:*接收影响校准点的所有触摸事件,并转发其余部分以允许正常变焦等.*随时检测位置/旋转/缩放级别发生变化,因此我可以调整图像.问题1:我可以期待任何重大问题吗?
然后我必须决定是否优先选择GroundOverlays或TileOverlay.
GroundOverlay:这似乎需要最少的工作,因为它仍然会加载整个图像.我也认为它会自动处理屏幕方向变化等事情.问题2:GroundOverlay能否适用于大图像(最大2000*2000像素)?是否涉及复制图像?因为图像太大,我在内存中买不到一个以上的副本.
TileOverlay:在某种程度上,这似乎是一个更专业的解决方案,因为它只使用实际需要的部分,我可以在以后引入支持同时使用多个地图图像源.我可能需要提前生成切片并为每个切片保存一个单独的文件,将其保存在内存中并按需创建切片可能需要大量内存.(或许我可以创建一个单独的磁贴服务,但这看起来有点脏.)问题3:是否可以控制磁贴缓存将使用多少内存?通常的限制是否适用?我不想在应用程序中的其他地方耗尽内存,因为缓存占用了我允许使用的大部分内存.问题4:文档说"请注意,与其他叠加层不同,如果重新创建地图,则不会自动恢复平铺叠加层,必须手动重新添加".我想这会在每次屏幕旋转时发生,这意味着必须再次读取文件,导致明显的加载延迟.这有什么好办法吗?问题5:当调用getTile并且我返回null(因为tile被保存在文件中并且我不想在读取它时阻止ui线程),在再次请求它之前需要多长时间?(似乎没有办法手动加载单个图块.)问题6:如何确定一个图块图像的良好图像分辨率(性能和质量)?
在一个自定义事件中,我需要我Marker更新它的drawable 6次(基本上,我希望Marker在每次增长和每次收缩之间延迟0.5秒增长和缩小3次),因此它会通知用户所述事件.
有没有办法实现这一点,而不必实际删除Marker并再次添加不同的Drawable?
我试图获得地图中心的纬度和经度.我正在使用Fragment来显示地图,
SupportMapFragment fm = (SupportMapFragment) getSupportFragmentManager()
.findFragmentById(R.id.mapID);
if (fm != null) {
googleMap = fm.getMap();
}
LatLng loc = googleMap.getCameraPosition().target;
Run Code Online (Sandbox Code Playgroud)
我打印这个loc,我的价值为0.0,0.0.我没有得到我错的地方.
我也尝试使用VisibleRegion地图中心的纬度和经度,但即使这样也无济于事.
android google-maps google-maps-markers google-maps-android-api-2
有没有一种方法可以在不加载地图的情况下在android上使用google maps v2,我需要在单击按钮时读取gps位置,并计算2点之间的距离,我知道该怎么做,但前提是该地图是加载后,我需要没有地图的方法,这可能吗?
android google-maps android-fragments google-maps-android-api-2
如果我在Google Maps v2上绘制一个带多边形的形状,有没有办法找出我当前的位置是否在形状内?请写清楚代码谢谢
请建议我,我是Android的新手如何打开一个内置的谷歌地图按钮点击在Android我有一个图像按钮. 如何在按钮点击打开内置的开放谷歌地图
android google-maps android-intent android-maps google-maps-android-api-2
我正在使用Google Maps开发应用程序,并且想要更改地图中折线的样式。我想将折线的颜色更改为渐变线,如何在android中做到这一点