当前位置: 首页 > 知识库问答 >
问题:

这里SDK在地图上标记位置

微生毅
2023-03-14

我在地图上显示用户的位置,但我想做的是标记相同的位置

在onCreate中,我得到了用户的位置:

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // Get a MapView instance from layout


        locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
        if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
            // TODO: Consider calling
            //    ActivityCompat#requestPermissions
            // here to request the missing permissions, and then overriding
            //   public void onRequestPermissionsResult(int requestCode, String[] permissions,
            //                                          int[] grantResults)
            // to handle the case where the user grants the permission. See the documentation
            // for ActivityCompat#requestPermissions for more details.
            return;
        }
        locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, this);

        Location location = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
        latitud=location.getLatitude();
        longitud=location.getLongitude();

        mapView = findViewById(R.id.map_view);
        mapView.onCreate(savedInstanceState);

        handleAndroidPermissions();
    }

然后我想在地图加载时做的是显示它并放置标记,我这样做:

 private void loadMapScene() {
        // Load a scene from the SDK to render the map with a map style.
        mapView.getMapScene().loadScene(MapStyle.NORMAL_DAY, new MapScene.LoadSceneCallback() {
            @Override
            public void onLoadScene(@Nullable MapScene.ErrorCode errorCode) {
                if (errorCode == null) {
                    mapObjectsExample = new MapObjectsExample(mapView);

                    GeoCoordinates geoCoordinates=new GeoCoordinates( latitud,longitud);

                    MapImage mapImage = MapImageFactory.fromResource(getApplicationContext().getResources(), R.drawable.here_car);
                    MapMarker mapMarker = new MapMarker( geoCoordinates, mapImage);

                    mapView.getMapScene().addMapMarker(mapMarker);

                    mapView.getCamera().setTarget(new GeoCoordinates( latitud,longitud));
                    mapView.getCamera().setZoomLevel(15);

                } else {
                    Log.d(TAG, "onLoadScene failed: " + errorCode.toString());
                }
            }
        });
    }

但我得到:

MapMarker(long,java.lang.Object)在com中具有受保护的访问权限。在这里sdk。mapviewlite。地图标记'

问题就在这句话里:

                MapMarker mapMarker = new MapMarker( geoCoordinates, mapImage);

共有1个答案

孟华晖
2023-03-14

在lite产品变体中,我们无法将图像对象直接传递给MapMarker构造函数。下面是我们如何在lite Variant中使用图像标记的代码片段。github示例中也介绍了这一点。

Github链接:https://github.com/heremaps/here-sdk-examples/tree/master/examples/latest/lite/android/MapMarkerLite

  MapImage mapImage = MapImageFactory.fromResource(context.getResources(), R.drawable.here_car);

MapMarker mapMarker = new MapMarker(geoCoordinates);
mapMarker.addImage(mapImage, new MapMarkerImageStyle());

mapView.getMapScene().addMapMarker(mapMarker);
 类似资料:
  • 我正在创建一个google maps应用程序,我如何使用JavaScript/HTML5创建一个按钮,在地图上的任何地方随机投下一个标记呢?

  • 我试图写一个地理位置网页,显示用户在地图上的大致位置。如果他们点击标记,他们可以把它拖到他们的确切位置。

  • 我有谷歌地图搜索框,当我搜索特定的地方时,我想用(lat,lng)访问标记位置,当我通过拖放标记时,我可以准确地访问位置 但我希望在搜索完成时获得标记位置,而不使用&

  • 我有一个从Google maps下载静态图像的应用程序,将标记放置在我想要的位置(通过将参数传入Google static maps URL来放置)。但是,我也需要能够点击标记。我想我可以将x和y坐标转换为lon/lat,然后用这种方法计算出哪个标记被点击了,但我发现这并不容易。 我知道地图的尺寸(以像素为单位),缩放级别,以及地图的中心点(以像素和lon/lat为单位),所以我跟踪了这篇博文。不

  • 我的mapview(osmbonuspack)旋转到行走的方向。 我如何在地图上旋转标记的标题,使它们是水平的--即易于阅读?我看到标记本身不需要任何旋转,而地图是转动的。 可以肯定的是:这是关于文字,是在倒置的眼药水附近。这不是气泡中的信息。