【问题标题】:android google map marker placingandroid谷歌地图标记放置
【发布时间】:2015-09-07 11:43:02
【问题描述】:

在我的 Android 应用程序中,我需要在地图上的确切位置放置标记。我在地图上用 51.507351,-0.127758(伦敦)位置标记了一个标记。我使用以下代码来完成这项工作。

googleMap.addMarker(new MarkerOptions().position(
        new LatLng(51.507351, -0.127758)).icon(
        BitmapDescriptorFactory.fromBitmap(BitmapFactory
                .decodeResource(getResources(),
                        R.drawable.q_icon))));
googleMap.moveCamera(CameraUpdateFactory.newLatLngZoom(
        new LatLng(51.507351, -0.127758), 20));

这是我的标记可绘制图像:

现在我的问题是,“Q”符号放置在 51.507351,-0.127758 的位置。我需要在底部箭头开始的位置放置标记。

请看图片,以便您理解我的问题。

我该怎么做?请帮帮我。

【问题讨论】:

    标签: android android-maps-v2 android-maps


    【解决方案1】:

    标记如何锚定背后的逻辑对于 4px×2px 图像是这样的:

            0,0      0.5,0.0        1,0
            *-----+-----+-----+-----*
            |     |     |     |     |
            |     |     |     |     |
      0,0.5 +-----+-----+-----+-----+ 1,0.5
            |     |     |   X |     |           (U, V) = (0.7, 0.6)
            |     |     |     |     |
            *-----+-----+-----+-----*
            0,1      0.5,1.0        1,1
    

    还要考虑到,根据您的位图资源,它的位置可能与您预期的略有不同,因为它们实际上接近于最近的捕捉位置。所以在上面的例子中,你的锚点会捕捉到这个位置:

     *-----+-----+-----+-----*
     |     |     |     |     |
     |     |     |     |     |
     +-----+-----+-----X-----+   (X, Y) = (3, 1)
     |     |     |     |     |
     |     |     |     |     |
     *-----+-----+-----+-----*
    

    Documentation

    【讨论】:

      【解决方案2】:

      使用MarkerOptionanchor方法:https://developers.google.com/android/reference/com/google/android/gms/maps/model/MarkerOptions.html#anchor(float,%20float)

      对于您的情况:

      MarkerOptions marker = new MarkerOptions()
      .anchor(0.5f, 1.0f)
      // Rest of the properties follow
      

      【讨论】:

        【解决方案3】:

        试试这个:

        googleMap.addMarker(new MarkerOptions().position(
                        new LatLng(51.507351, -0.127758)).icon(
                        BitmapDescriptorFactory.fromBitmap(BitmapFactory
                                .decodeResource(getResources(),
                                        R.drawable.q_icon))).anchor(0.5f, 1f));
        googleMap.moveCamera(CameraUpdateFactory.newLatLngZoom(
            new LatLng(51.507351, -0.127758), 20));
        

        【讨论】:

        • 在这里工作。 Spaciba o_O
        【解决方案4】:

        试试这个,

        private GoogleMap mMap;
        
        mMap = ((MapFragment) getFragmentManager().findFragmentById(R.id.map)).getMap();
        
        mMap.addMarker(new MarkerOptions()
            .position(new LatLng(0, 0))
            .title("Hello world")
        .icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_AZURE)));
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2016-11-23
          • 1970-01-01
          • 1970-01-01
          • 2017-12-29
          • 1970-01-01
          • 1970-01-01
          • 2011-08-15
          • 2011-02-22
          相关资源
          最近更新 更多