Google Map API V2 - How do I keep a marker in the center of the screen while user is scrolling the map?

后端 未结 7 1776
执念已碎
执念已碎 2020-12-10 02:00

Google Map API V2 - How do I keep a marker in the center of the screen while user is scrolling the map ?

My purpose is to let user choose a location. I use the follo

相关标签:
7条回答
  • 2020-12-10 02:29

    How about?

    mMap.setOnCameraChangeListener(new OnCameraChangeListener() {
            public void onCameraChange(CameraPosition arg0) {   
                    mMap.clear();               
                    mMap.addMarker(new MarkerOptions().position(arg0.target));
            }
    });
    
    0 讨论(0)
  • 2020-12-10 02:30

    This would actually be possible by overlaying a custom view on top of your map. You would write a class that extends View and you could override the draw() and onTouchEvent() methods of your view, such that it would draw (what looks like) a marker, over top of the middle of the map. When the user sets the marker, you would use a projection to translate the screen location of the marker into a LatLong on the map. You could then set a proper marker on the map (which would now be fixed to the geolocation).

    As you can tell from the above, this is not the simplest process. I would suggest going with doubleA's solution, for ease of implementation.

    0 讨论(0)
  • 2020-12-10 02:32

    This is the solution

        private GoogleMap mMap;
        private Marker markerCenter;
    
        @Override
        public void onMapReady(GoogleMap googleMap) {
    
           mMap = googleMap; 
    
           MarkerOptions markerOptions = new MarkerOptions();
           markerOptions.position(mMap.getCameraPosition().target);
           markerCenter = mMap.addMarker(markerOptions);
    
           mMap.setOnCameraMoveListener(new GoogleMap.OnCameraMoveListener() {
              public void onCameraMove() {
                  markerCenter.setPosition(mMap.getCameraPosition().target);
              }
           });
    
        }
    
    0 讨论(0)
  • 2020-12-10 02:34

    I do not think that you can actually keep a marker in the middle of the screen and float it easily. My suggestion is to trick your user. Add your marker image onto the map like a button. you can place it in the middle of the screen using the xml layout. Then when your user selects a location just retrieve the gps coordinates from the middle of the screen.

    On a side note you could also just make your marker draggable Then the user could drag it around the map.

    mMap.addMarker(new MarkerOptions().position(coordinate)
                        .title("Your Title")
                        .snippet("Please move the marker if needed.")
                        .draggable(true)); 
    
    0 讨论(0)
  • 2020-12-10 02:42

    Option 1

    I think the best option is move marker, when user move map...

    googleMap.setOnCameraMoveListener(new GoogleMap.OnCameraMoveListener() {
                @Override
                public void onCameraMove() {
                    marker.setPosition(googleMap.getCameraPosition().target);//to center in map
                }
            });
    //note marker is global
    

    Option 2

    or simple, in your layout, with relative layout put the fragment, and in above the icon of marker, you will calculate that marker will always in the middle of the map...

    i think this is complicate, by size of screens, but the phone will not move every time the marker...

    0 讨论(0)
  • 2020-12-10 02:46
    Marker marker;//have a instance variable marker
    mMap.setOnCameraChangeListener(new OnCameraChangeListener();
    public void onCameraChange(CameraPosition cameraPosition) {   
                    MarkerOptions options = new MarkerOptions()
                                            .position(cameraPosition.target);
    
                     if(marker != null){marker.remove();}
                     marker = mMap.addMarker(options);
    }
    

    This won't be smooth because,onCameraChange call back is not called during intermediate frames.It is called only after the camera is changed completely.

    0 讨论(0)
提交回复
热议问题