2
A
回答
2
我没有找到任何风格cusomization。标记不能被替换。
我做了一个自定义图块和一个自定义getCurrentLocation函数。
这里是我的代码:
首先,你需要在右上角找到我按钮瓷砖。我将它添加到布局:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
tools:context="android.support.v4.app.FragmentActivity" >
<fragment
android:id="@+id/tabs_fragment"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
class="com.bucons.savetime.MyMapFragment" />
<ImageButton
android:id="@+id/myLocationButton"
android:layout_width="40dp"
android:layout_height="40dp"
android:padding="4dp"
android:layout_alignParentRight="true"
android:layout_marginRight="10dp"
android:layout_marginTop="10dp"
android:scaleType="fitCenter"
android:src="@drawable/ic_menu_mylocation"
android:background="@drawable/map_tile_bg" />
</RelativeLayout>
所需要的资源是@绘制/ ic_menu_mylocation 你可以得到它:https://docs.google.com/file/d/0BzGos46YSzYfWkRYS2ZMNmdZREk/edit
而对于背景:@绘制/ map_tile_bg:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android"
android:exitFadeDuration="@android:integer/config_shortAnimTime">
<item android:state_pressed="true">
<shape android:shape="rectangle">
<stroke
android:width="1px"
android:color="@color/map_tile_bg_stroke_pressed"/>
<solid android:color="@color/map_tile_bg_solid_pressed"/>
<corners android:radius="1dp"/>
</shape>
</item>
<item>
<shape android:shape="rectangle">
<stroke
android:width="1px"
android:color="@color/map_tile_bg_stroke"/>
<solid android:color="@color/map_tile_bg_solid"/>
<corners android:radius="1dp"/>
</shape>
</item>
</selector>
颜色转换器有:
<color name="map_tile_bg_solid">#aaffffff</color>
<color name="map_tile_bg_stroke">#ffcccccc</color>
<color name="map_tile_bg_solid_pressed">#aaFF9933</color>
<color name="map_tile_bg_stroke_pressed">#ffcccccc</color>
这里是我的片段:
public class MyMapFragment extends SupportMapFragment {
//Current location Marker
private Marker myLocationMarker;
GoogleMap map = null;
public MyMapFragment() {
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
setUpMapIfNeeded();
getCurrentLocation();
}
//set the map and set the tile for locate me button
private void setUpMapIfNeeded() {
// Do a null check to confirm that we have not already instantiated the map.
if (map == null) {
map = getMap();
// Check if we were successful in obtaining the map.
if (map != null) {
//Top right button for go to location
ImageButton locateMeTile = (ImageButton) getSherlockActivity().findViewById(R.id.myLocationButton);
locateMeTile.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
getCurrentLocation();
}
});
}
}
}
//retrieve the current position. Only once
private void getCurrentLocation() {
locationManager = (LocationManager) getSherlockActivity().getSystemService(Context.LOCATION_SERVICE);
Criteria crit = new Criteria();
String towers = locationManager.getBestProvider(crit, false);
Location location = locationManager.getLastKnownLocation(towers);
Double glat = null;
Double glon = null;
if(location != null){
glat = location.getLatitude();
glon = location.getLongitude();
}
CameraPosition pos = new CameraPosition.Builder()
.target(new LatLng(glat, glon))
.zoom(10)
.build();
if(pos != null) {
currLocationChange(pos.target);
map.animateCamera(CameraUpdateFactory.newCameraPosition(pos));
} else {
Toast.makeText(getSherlockActivity(), R.string.main_error, Toast.LENGTH_LONG).show();
}
}
//Add pin to the current Location or move existing
private void currLocationChange(LatLng loc) {
if(myLocationMarker != null) {
myLocationMarker.setPosition(new LatLng(loc.latitude,loc.longitude));
} else {
myLocationMarker = map.addMarker(new MarkerOptions()
.position(new LatLng(loc.latitude,loc.longitude)));
}
}
}
相关问题
- 1. Google地图V2禁用MyLocation蓝色图标
- 2. 不设计图层样式
- 3. Google地图v2热图地图人口
- 4. Android MapBox更改MyLocation标记的样式
- 5. 在Google地图v2中添加自定义图层
- 6. 在G地图中使用动画GIF作为地面叠加层地图v2
- 7. 地图不适用于地图v2
- 8. 谷歌地图V2内或在地图
- 9. 更改样式Google地图的样式
- 10. Google地图v2或v3?
- 11. 地图v2着色标记
- 12. 谷歌地图V2 Android
- 13. 谷歌地图V2键
- 14. 谷歌地图api v2
- 15. 谷歌地图API V2
- 16. Android的谷歌地图V2
- 17. 谷歌地图v2与v3
- 18. 谷歌地图样式uipopovercontroller
- 19. Photoshop图层样式到CoreGraphics代码
- 20. 设置多层融合表的样式谷歌地图
- 21. 必应地图图层
- 22. 如何更改Google地图上KML图层的信息框样式?
- 23. 在Android地图v2中创建自定义样式的地图时无法解析setMapStyle()
- 24. 使用自定义字样在地图V2
- 25. 谷歌地图V2防止地图重新加载旋转
- 26. 融合表地图图层热图
- 27. Android谷歌地图海图图层
- 28. 谷歌地图iOS版SDK mylocation按钮没有显示
- 29. 谷歌地图Android V2:无法加载地图模块
- 30. 谷歌地图V2随机载入地图Android
太棒了!感谢您的解决方案,工作perfrect – OFFmind 2013-08-27 09:35:28