带有来自服务器的数字标记的谷歌地图

     2023-05-07     268

关键词:

【中文标题】带有来自服务器的数字标记的谷歌地图【英文标题】:Google map with number markers from server 【发布时间】:2018-10-19 04:17:14 【问题描述】:

我想在 Google 地图上显示多个标记。我想在圆形区域中将标记显示为数字。如下图:

为了添加多个标记,我已经完成了:

Adding multiple markers in Google Maps API v2 Android

Adding Multiple Markers Google Maps

How to show multiple markers on MapFragment in Google Map API v2?

我已经通过这段代码实现了多个标记:

public class ComplaintsMapActivity extends FragmentActivity implements OnMapReadyCallback  

    private GoogleMap mMap;
    private NetworkManager networkManager = null;
    private int reqIdComplaintList = -1;
    private ArrayList<ComplaintData> complaintList = new ArrayList<>();

    private static final int ZOOM_LEVEL = 15;
    private static final int TILT_LEVEL = 0;
    private static final int BEARING_LEVEL = 0;

    @Override
    protected void onCreate(Bundle savedInstanceState) 
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_complaints_map);
        // Obtain the SupportMapFragment and get notified when the map is ready to be used.
        SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
                .findFragmentById(R.id.map);
        mapFragment.getMapAsync(this);

        networkManager = NetworkManager.getInstance();

    

    @Override
    public void onMapReady(GoogleMap googleMap) 
        mMap = googleMap;

        complaintList = (ArrayList<ComplaintData>)getIntent().getSerializableExtra("list");


        for (int i = 0; i < complaintList.size(); i++) 
            ComplaintData location = complaintList.get(i);
            LatLng position = new LatLng(Double.parseDouble(location.getLat()), Double.parseDouble(location.getLng()));
            mMap.addMarker(new MarkerOptions().position(position));
            
            if (i == 0) 
                CameraPosition camPos = new CameraPosition(position, ZOOM_LEVEL, TILT_LEVEL, BEARING_LEVEL);
                mMap.moveCamera(CameraUpdateFactory.newCameraPosition(camPos));
            
        

    


我的结果是:

我知道如何设置自定义标记。但是这个数据是动态的,任何数量的数据都会在那里。所以我想问是否有任何方法可以通过任何循环生成这些数字。因为为每个位置设置标记,我需要数百个标记,这不太可取。那么有什么选择吗?

注意:我不想要集群。我只想在一个标记上显示 1,在第二个标记上显示 2,... 和 100 在一百个标记上等等。

任何帮助将不胜感激。

谢谢你:)

【问题讨论】:

但是根据您的第一个图像描述,它肯定意味着聚类! @Sreehari 是的,这就是我澄清我不想要集群的原因。这只是我想要实现的参考图像 【参考方案1】:

首先你需要为你的标记创建一个自定义布局:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:layout_
   android:layout_>

<ImageView
   android:layout_
   android:layout_
   android:src="@drawable/ic_marker" />

<TextView
   android:id="@+id/num_txt"
   android:layout_
   android:layout_
   android:layout_centerInParent="true"
   android:paddingBottom="@dimen/_10sdp"
   android:text="20"
   android:textColor="@color/white"
   android:textSize="@dimen/font_title"
   android:textStyle="bold" />

</RelativeLayout>

您的图像可以是可绘制的。您可以将图像视图或背景添加到文本视图。两者都有效

View marker = ((LayoutInflater) getActivity().getSystemService(Context.LAYOUT_INFLATER_SERVICE)).inflate(R.layout.custom_marker_layout, null);
   TextView numTxt = (TextView) marker.findViewById(R.id.num_txt);
Marker myMarker = googleMap.addMarker(new MarkerOptions().position(latLng).title(arrPostList.get(i).getRestaurant_name()).icon(BitmapDescriptorFactory.fromBitmap(Utils.createDrawableFromView(getActivity(), marker))));

从 Drawable 方法创建位图:

// Convert a view to bitmap
 public static Bitmap createDrawableFromView(Context context, View view) 
   DisplayMetrics displayMetrics = new DisplayMetrics();
   ((Activity) context).getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
   view.setLayoutParams(new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT));
   view.measure(displayMetrics.widthPixels, displayMetrics.heightPixels);
   view.layout(0, 0, displayMetrics.widthPixels, displayMetrics.heightPixels);
   view.buildDrawingCache();
   Bitmap bitmap = Bitmap.createBitmap(view.getMeasuredWidth(), view.getMeasuredHeight(), Bitmap.Config.ARGB_8888);

   Canvas canvas = new Canvas(bitmap);
   view.draw(canvas);

   return bitmap;

【讨论】:

颤动的谷歌地图无法显示来自firebase的标记

】颤动的谷歌地图无法显示来自firebase的标记【英文标题】:fluttergooglemapcannotshowmarkersfromfirebase【发布时间】:2020-11-2405:13:34【问题描述】:我正在学习颤振并尝试使用从firebase获得的标记创建谷歌地图。问题是下面的代码只能... 查看详情

带有多个标记的谷歌地图自动中心

】带有多个标记的谷歌地图自动中心【英文标题】:Googlemapautocenterwithmultiplemarkers【发布时间】:2018-05-1312:39:35【问题描述】:我创建了一个地图以将我的搜索结果显示为地图上的标记,它几乎可以完美运行,但是自动居中/缩放... 查看详情

带有毕加索的谷歌地图集群项目标记图标

】带有毕加索的谷歌地图集群项目标记图标【英文标题】:GoogleMapsClusterItemMarkerIconwithPicasso【发布时间】:2015-07-0822:30:18【问题描述】:我正在使用带有android-maps-utils0.3.4的GoogleMapSDK7.3.0,因为我需要为地图上的标记使用集群。... 查看详情

带有css圆角的谷歌地图自定义标记

】带有css圆角的谷歌地图自定义标记【英文标题】:Googlemapcustommarkerwithcssroundedcorner【发布时间】:2014-10-1114:47:52【问题描述】:我已经设法在谷歌地图上使用和应用我自己的标记,如下所示。varmarker=newgoogle.maps.Marker(position:point... 查看详情

如何在同一张地图上使用带有多个标记的谷歌地图 API

】如何在同一张地图上使用带有多个标记的谷歌地图API【英文标题】:HowtousegooglemapsAPIwithmultiplemarkersonthesamemap【发布时间】:2010-10-1023:38:36【问题描述】:所以,我有以下脚本来使用谷歌地图API,一切都很好,但我需要创建一... 查看详情

如何在圆形语音气泡内制作带有照片的谷歌地图标记?

】如何在圆形语音气泡内制作带有照片的谷歌地图标记?【英文标题】:HowtomakeaGoogleMapMarkerwithaphotoinsideroundspeech-bubble?【发布时间】:2018-10-1301:39:03【问题描述】:我已经搜索了足够多,但还没有找到。如何使用照片制作GoogleMap... 查看详情

在颤动的谷歌地图的自定义标记中添加数字? [关闭]

】在颤动的谷歌地图的自定义标记中添加数字?[关闭]【英文标题】:addnumberwithincustommarkeringooglemapatflutter?[closed]【发布时间】:2021-11-1500:30:42【问题描述】:我想在颤振开发时在谷歌地图的自定义标记中添加数字。我在下面分... 查看详情

Ionic 4/5 - 带有服务的模态窗口中的谷歌地图

】Ionic4/5-带有服务的模态窗口中的谷歌地图【英文标题】:Ionic4/5-googlemapsinmodalwindowwithaservice【发布时间】:2021-08-2211:28:00【问题描述】:我正在使用javascriptsdk在Ionic5中显示地图。我使用为此创建的服务加载这些地图。当我在页... 查看详情

带有集群和自定义视图标记的谷歌地图在放大和缩小时滞后太多

】带有集群和自定义视图标记的谷歌地图在放大和缩小时滞后太多【英文标题】:GoogleMapwithClusterandCustomviewmarkerlaggingtoomuchwhilezoomInandzoomOut【发布时间】:2019-11-2404:19:12【问题描述】:我想用自定义视图加载GoogleMap来代替GMSMarker... 查看详情

基于用户标记的谷歌标记

...及帖子表单页面中添加位置我想在帖子页面中添加另一个带有用户标记的地图例如这个airbnbwebsite你认为这可能吗?我已经建立了我的网站并使用了wordpress和多个插件,但是对 查看详情

鼠标悬停时的谷歌地图 v3 标记信息窗口

...从click更改为mouseover在我正在使用的文件中。我正在使用来自google库的演示,其中包含一个融合表层。您放大集群并看到位置的红 查看详情

如何计算适当的谷歌地图缩放级别

...:我有一个棘手的问题...我正在使用谷歌地图静态API创建带有标记的地图图像。考虑到我要显示的两个标记的位置,我正在努力做的是计算适当的缩放级别。我有latitudeA、longitudeA、latitudeB、longitudeB和中心点(简 查看详情

来自服务器的谷歌地图实时位置更新

】来自服务器的谷歌地图实时位置更新【英文标题】:Googlemaprealtimelocationupdatefromserver【发布时间】:2016-06-2805:34:59【问题描述】:我正在开发一个需要实时共享位置的android应用程序。我有MySql作为服务器来存储用户位置。我需... 查看详情

新的谷歌地图标记

】新的谷歌地图标记【英文标题】:NewGoogleMapsMarker【发布时间】:2014-05-2320:29:28【问题描述】:任何人都知道此图标的URL,如果您可以更改最新版本的GoogleMapsAPI的颜色?我想要一个像下面这样的蓝色/绿色图标!编辑---------------... 查看详情

保存要离线加载的谷歌地图图像

...提供的地址显示标记。我的用例是用户需要在离线时查看带有标记的谷歌地图。这些主要是在现场无法访问互联网的现场用户。我想的方法是让用户在ion 查看详情

摇晃的谷歌地图标记动画

】摇晃的谷歌地图标记动画【英文标题】:ShakyGoogleMapsMarkerAnimation【发布时间】:2015-08-0817:26:59【问题描述】:我正在尝试为Google地图上的标记设置动画。我遇到的问题是标记在制作动画时的行为方式。标记沿着给定的一组点移... 查看详情

带有离子的谷歌地图

】带有离子的谷歌地图【英文标题】:googlemapswithionic【发布时间】:2014-12-2103:09:33【问题描述】:我正在尝试使用带有Ionic的谷歌地图来实现地图。我遵循了Link中的编码但我得到的只是一个空白屏幕,不知道我哪里出错了。请... 查看详情

不同外部链接的谷歌地图标记点击功能问题

】不同外部链接的谷歌地图标记点击功能问题【英文标题】:googlemapmarkerclickfunctionproblemfordifferentexternallinks【发布时间】:2020-02-0403:33:30【问题描述】:我正在为我的网站使用谷歌地图。单击地图的右侧菜单时,我想显示不同的... 查看详情