我想用我自己的图像替换Android Maps V2用于"我的位置"(小蓝点/箭头)的默认图标.我创建了自己的磁贴provider,它带来了一些主要是蓝色的地图,因此很难看到默认的"我的位置"图标.以前我会覆盖它的draw方法MyLocationOverlay,但是在新的api中似乎没有.任何帮助都会很棒!
编辑:我还需要图标才能旋转,就像箭头一样,取决于你面对的方式.所以我不能只使用正常marker:(基本上我只需要为该箭头创建自定义图像..

更新 Hi All,Google Play的更新现在允许平面标记和标记旋转,这正是我所需要的.
背景
我有一个更大的应用程序,我在使用新的Google Maps API时遇到了一些问题.我尝试用不同的问题描述它,但由于它看起来太复杂,我决定开始一个新项目,尽可能简单并尝试重现问题.所以这就是.
情况
我正在使用Fragments并希望放入MapView内部.我不想用MapFragment.我准备的示例项目可能不是很漂亮,但我试图让它尽可能简单,它必须包含原始应用程序中的一些元素(再次简化).我有一个Activity和我的习惯Fragment,MapView以编程方式添加.将Map包含一些点/ Markers.点击一个之后Marker的InfoWindow被示出并点击它引起下Fragment所示(与正被replace()在内容功能).
问题
我有两个问题:
当显示Mapwith 时,Markers屏幕旋转会导致Class not found when unmarshalling我的自定义MyMapPoint类错误- 我不知道为什么以及它意味着什么.
我点击Marker然后InfoWindow.在此之后我按下硬件后退按钮.现在我可以看到Map但没有Markers并且集中在0,0一点.
代码
主要活动
public class MainActivity extends FragmentActivity {
private ArrayList<MyMapPoint> mPoints = new ArrayList<MyMapPoint>();
@Override
protected void onCreate(Bundle …Run Code Online (Sandbox Code Playgroud) android android-fragments android-mapview android-maps-v2 fragment-lifecycle
我的搜索中没有找到答案,有几个答案,但它们对我不起作用.
我在地图上有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.
目前Android Map v2在点击后捕捉到标记位置.我想禁用此行为,但看不到任何选项.
有人知道如何解决这个问题吗?
我试图表现出MapFragment的Android Maps v2 API在Activity与@android:style/Theme.DeviceDefault.Light.Dialog.NoActionBar主题.这很好用.但是,地图会出现黑暗叠加层:

当我将主题更改为时@android:style/Theme.DeviceDefault.Light.NoActionBar,地图显示为应该:

这是我的xml布局文件:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<fragment
android:id="@+id/mapfragment"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
class="com.google.android.gms.maps.MapFragment" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="HELLO"
android:textSize="@dimen/textsize_large" />
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
这里发生了什么?
我正在使用内置的地理围栏API(播放服务),并且结果好坏参半.看起来在设置地理围栏之后,即使GPS打开,进入/退出的通知也非常不一致,具有最新位置(连接了LocationClient,在后台运行.)我开始监控(轮询)位置变化和调试文本字段中的距离,并且即使基于设备注册的位置和地理围栏的位置(我在技术上是在地理围栏的内部/外部),通常有时会触发通知,有时也不会.有什么方法可以让它更具可预测性?我几乎想要放弃这个api并根据设备位置的轮询实现我自己的(电池耗尽)地理围栏.
我正在使用Google Maps API v2 for android并且正常运行.但是,我正在尝试使用地理编码器来获取地址的经度和纬度,但没有成功.
它改变了从v2做到这一点的方式?
我正在使用传统的代码
Geocoder gc = new Geocoder(context);
//...
List<Address> list = gc.getFromLocationName("1600 Amphitheatre Parkway, Mountain View, CA", 1);
Address address = list.get(0);
double lat = address.getLatitude();
double lng = address.getLongitude();
//...
Run Code Online (Sandbox Code Playgroud)
始终返回强制关闭,Log不解决任何问题.当使用try/catch块时,打开地图但总是使用相同的位置使用Internet权限,我已经包含在项目中COARSE_LOCATION我已经使用了位于此处和其他站点的各种代码,但没有成功.
先感谢您.
如何更改谷歌地图我的位置默认按钮?我设置了我的位置启用和地图绘制标准图像来查找位置,是否可以更改默认图像?
android android-maps google-maps-android-api-2 android-maps-v2
地图活动不显示地图,它显示为带有缩放控制按钮的白色屏幕.清单文件如下:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.demomap"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="17" />
<permission
android:name="com.example.demomap.permission.MAPS_RECEIVE"
android:protectionLevel="signature" />
<uses-permission android:name="com.example.demomap.permission.MAPS_RECEIVE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.example.demomap.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<meta-data
android:name="com.google.android.maps.v2.API_KEY"
android:value="AIzaSyCTQZOcXFS3RpNSVe79HHN1xojat-2MbT4" />
</application>
<uses-feature
android:glEsVersion="0x00020000"
android:required="true" />
</manifest>
Run Code Online (Sandbox Code Playgroud)
我的XmL文件像这样:
<?xml version="1.0" encoding="utf-8"?>
<fragment
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/map"
android:layout_width="match_parent"
android:layout_height="match_parent"
class="com.google.android.gms.maps.SupportMapFragment" />
Run Code Online (Sandbox Code Playgroud)
Log Cat错误:
05-15 17:15:16.255: …Run Code Online (Sandbox Code Playgroud) 嗨我正在发出服务器请求,当我收到来自服务器的请求时,我正在Ui Thread上执行一个ClusterManager.addItem(),但这些项目不会在地图中绘制,只有当我进行缩放更新(+, - )时正在显示.此外,我尝试调试渲染器,但是直到我更新地图中的缩放才调用onBeforeClusterRendered/onBeforeClusterItemRendered.有关如何刷新map/clusterManager/markers的任何想法?
MarkerManager markerManager = new MarkerManager(map);
clusterManager = new ClusterManager<TweetClusterItem>(getActivity(), map, markerManager);
clusterManager.setRenderer(new TweetClusterRenderer(getActivity(), map, clusterManager, defaultMarker));
clusterManager.setOnClusterClickListener(this);
clusterManager.setOnClusterInfoWindowClickListener(this);
clusterManager.setOnClusterItemClickListener(this);
clusterManager.setOnClusterItemInfoWindowClickListener(this);
UiSettings uiSettings = map.getUiSettings();
uiSettings.setZoomControlsEnabled(true);
uiSettings.setMyLocationButtonEnabled(false);
map.setOnCameraChangeListener(clusterManager);
map.setOnMarkerClickListener(clusterManager);
map.setOnInfoWindowClickListener(clusterManager);
map.setOnMapClickListener(this);
Run Code Online (Sandbox Code Playgroud)