目前正在使用Google地图将Android应用迁移到Google Maps Android v2; 我希望地图显示内置位置标记以及自定义标记.使用以前的库,我习惯在"自定义标记"下方绘制位置标记
mapView.setReticleDrawMode(ReticleDrawMode.DRAW_RETICLE_UNDER);
Run Code Online (Sandbox Code Playgroud)
我在新API中找不到类似的选项.我错过了什么?
android android-mapview google-maps-android-api-2 android-maps-v2
我想在Google maps v2上用我自己的图标替换蓝点(在地图上显示当前位置).我在下面试过,没有用过.
应该是这样的

下面没用
Bitmap b = BitmapFactory.decodeResource(getResources(),
R.drawable.location_arrow1);
googleMap.addMarker(new MarkerOptions().position(myPosition)
.title(getIntent().getStringExtra("first_name"))
.icon(BitmapDescriptorFactory.fromBitmap(b)));
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用Google Map V2.当我使用地图片段..一切正常.但是,如果我使用mapview,则会显示空白活动.
可能有什么不对?XML:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/mapParent"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<com.google.android.gms.maps.MapView
android:id="@+id/map"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
主要活动:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
Run Code Online (Sandbox Code Playgroud) 我正在使用Google Maps V2 for Android和maps utils扩展库进行标记聚类.应用程序的某些部分不需要获取聚集标记.
有没有办法禁止clusterManager集群标记,并在某些条件后让它再次集群项目?
我试图在给定位置附近的地图上生成随机点.我有一个circle半径为100的用户位置周围的形状,我想在这个圆圈区域内生成随机的LatLng坐标.到目前为止,我已经提出了以下功能,但点标记仍然出现在圆圈范围之外.
double lat = location.getLatitude();
double lon = location.getLongitude();
for (int i = 0; i < markers.size(); i++) {
Marker mrk = markers.get(i);
Random random = new Random();
double radiusInDegrees =mCircle.getRadius();
double u = random.nextDouble();
double v = random.nextDouble();
double w = radiusInDegrees * Math.sqrt(u);
double t = 2 * Math.PI * v;
double x = w * Math.cos(t);
double y = w * Math.sin(t);
// Adjust the x-coordinate for the shrinking of the east-west distances
double new_x …Run Code Online (Sandbox Code Playgroud) 我已经在网上寻找解决方案,因为getMap()方法已经过时,因此,我想用getMapAsync();替换它.我搜索了谷歌以及机器人官方文件,我仍然卡住请帮忙.
我现在收到一条错误消息,指出不兼容的类型要求com.google.android.gms.GoogleMap发现无效.
public class Maps extends AppCompatActivity implements OnMapReadyCallback {
private GoogleMap googleMap;
@Override protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.Maps);
googleMap = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(
R.id.mapFragment)).getMapAsync(this);
LatLng latlong = new LatLng(lat, lon);
googleMap.addMarker(new MarkerOptions().position(latlong).title(name));
googleMap.moveCamera(CameraUpdateFactory.newLatLngZoom(latlong, 15));
}
@Override
public void onMapReady(GoogleMap googleMap) {
}
}
Run Code Online (Sandbox Code Playgroud)
下面的方法给出了错误,它表示不兼容的类型必须com.google.android.gms.GoogleMap发现无效.
googleMap = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(
R.id.mapFragment)).getMapAsync(this);
Run Code Online (Sandbox Code Playgroud) 我想zoom在Google map在英里的半径特定比如说10英里/ 20英里/ 30英里等按我的条件在android系统。
我需要的是从当前经纬度点绘制一个特定半径(10/20/30.. 英里)的圆,并将地图缩放到我已经绘制了带有半径的圆的特定英里。
我能够指出我当前的位置,绘制圆圈。但是我无法将地图缩放到所需的半径英里(圆圈应该以我当前的位置为中心以指定的英里为中心聚焦在屏幕上)。
目前我正在使用以下代码进行缩放:
gooMap.moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(selectedLat, selectedLong), 15));
gooMap.animateCamera(CameraUpdateFactory.zoomTo(10), 2000, null);
Log.e("Circle Lat Long:", selectedLat + ", " + selectedLong);
circle.remove();
circle = gooMap.addCircle(new CircleOptions()
.center(new LatLng(selectedLat, selectedLong))
.radius(iMiles * 1609.34) // Converting Miles into Meters...
.strokeColor(Color.RED)
.strokeWidth(5));
circle.isVisible();
Run Code Online (Sandbox Code Playgroud)
我知道将缩放级别设置为 15 不会将地图缩放到所需的英里数。但我需要缩放地图以达到英里半径。我怎样才能实现它。任何人都可以帮助我。
编辑:-添加的图像详细解释了我需要的内容。Image_1:- 当我将半径设置为 10 英里时,地图应如图所示缩放。Image_2 当我将半径设置为 50 英里时,地图应如图所示缩放。请查看地图位置的差异以分析我需要的缩放级别。
提前致谢。
android google-maps google-maps-api-3 android-maps android-maps-v2
我已经RecyclerView在其他类型的列表项旁边添加了地图视图,但是现在...如何以及在何处初始化地图,在哪里监听onMapReady,以便以后可以放置标记,以及如何处理回收该项目?
有什么想法在这种情况下最好的做法是什么?
我正在尝试实施Google地图显示,下面是我的代码:
package com.fragments;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.SupportMapFragment;
public class MapFragment extends SherlockMapFragment {
private GoogleMap mMap;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View root = super.onCreateView(inflater, container, savedInstanceState);
SupportMapFragment mapFrag= (SupportMapFragment)getSupportFragmentManager().findFragmentById(R.id.fragment_map);
mMap = mapFrag.getMap();
return root;
}
}
Run Code Online (Sandbox Code Playgroud)
我得到一个错误,getSupportFragmentManager()未定义类型MapFragment.但是我有点困惑,因为我导入了com.google.android.gms.maps.SupportMapFragment.那个方法不应该来自那里吗?我错过了让这种方法起作用的一些步骤吗?
我有一个包含在应用程序中的地图.我需要地图放大标记和用户位置,但保持标记居中.放大效果很好,但当然不会将标记置于地图上.
@Override
public void onLocationChanged(Location location) {
if (mListener != null) {
mListener.onLocationChanged(location);
LatLngBounds bounds = new LatLngBounds.Builder()
.include(new LatLng(location.getLatitude(),location.getLongitude()))
.include((new LatLng(52.3563, 4.8790)))
.build();
mMap.animateCamera(CameraUpdateFactory.newLatLngBounds(bounds, 35));
}
}
Run Code Online (Sandbox Code Playgroud)
将两者保持在界限内但保持标记居中的最佳方法是什么?我似乎无法在官方文档中找到解决方案.