2013-06-27 3 views
5

Я знаю, что это обсуждалось ранее, но на самом деле я не могу найти решение.Пользовательский маркер Android Maps v2 имеет неправильное положение при масштабировании

Я добавляю пользовательский значок для моих маркеров:

markerUserLocation = mMap.addMarker(new 
         MarkerOptions().position(new 
           LatLng(point.latitude, 
             point.longitude)) 
           .anchor(0.5f, 1.0f) 
           .icon(BitmapDescriptorFactory.fromResource(R.drawable.ic_marker_my_location))); 

Проблема заключается в том, когда масштабировании в/из маркеров получает расположенные в плохом месте.

Я попытался сыграть с значениями привязки, но не успел. Не является ли якорь середины/нижней части изображения по умолчанию? Что мне нужно сделать, чтобы фактически сохранить нижнюю часть маркера в заданных координатах точки, независимо от уровня масштабирования?

Вот образец значка ic_marker_my_location (размер xhdpi), так как я не могу загрузить исходный значок.

LE: Это действительно глупо, но если я использую изображение меньшего маркера ... он работает правильно ... Так что, возможно, есть ошибка с размером изображения маркера? Или, если изображение больше, мне нужно установить дополнительные параметры?

+0

Можете ли вы добавить свой файл ic_marker_my_location.png к этому вопросу? –

+0

Я просто добавил образец того же размера – Alin

+0

Я использую Open Street Maps, и я испытываю ту же проблему, ранее приложение показало мне правильное текущее местоположение, но теперь оно показывает, как 10 км вперед! – TharakaNirmana

ответ

0

мне удалось решить проблему путем создания новых маркеров PNG. В основном был создан новый png того же размера и воссоздан образ ... и теперь он работает. Поэтому я понятия не имею, что на самом деле произошло, может быть, контроль карты не понравился какой-то маржи или что-то еще.

0

Возможно, вы фактически передаете значения поплавка для широты и долготы. Пожалуйста, передайте в двузначных значениях, как это ..

private double lat = 13.005039; 
private double lng = 77.57734; 


mMap.addMarker(new MarkerOptions().position(new LatLng(lat, lng)); 
0
used this code 

// Creating a marker 
       MarkerOptions markerOptions = new MarkerOptions(); 

       // Getting a place from the places list 
       HashMap<String, String> hmPlace = list.get(i); 

       // Getting latitude of the place 
       double lat = Double.parseDouble(hmPlace.get("lat"));     

       // Getting longitude of the place 
       double lng = Double.parseDouble(hmPlace.get("lng")); 

       // Getting name 
       String name = hmPlace.get("place_name"); 

       // Getting vicinity 
       String vicinity = hmPlace.get("vicinity"); 

       LatLng latLng = new LatLng(lat, lng); 

       // Setting the position for the marker 
       markerOptions.position(latLng); 

       // Setting the title for the marker. 
       //This will be displayed on taping the marker 
       markerOptions.title(name); 
       markerOptions.snippet(vicinity); 

       // Placing a marker on the touched position 
       mGoogleMap.addMarker(markerOptions);    
+0

Что такое окрестности? –

5

Я недавно испытал подобную проблему. Мне кажется, что есть ошибка с функцией setIcon (Bitmap bitmap) маркера.

Как только я меняю изображение маркера, якорь перепутался, поэтому мне пришлось снова его вернуть в положение по умолчанию.

marker.setIcon(bitmap); 
marker.setAnchor(0.5f,1f); 

Это работает для меня, используя игровые услуги (8.4.0)

+0

Спасибо! С тех пор я начал иметь такую ​​же проблему, что и несколько дней назад, и я понятия не имел об этой проблеме. Вы спасли мою жизнь! – Ton

+0

Да да да и тысячи раз да! –

+0

Это не исправило мою проблему, значок по-прежнему отображается неправильно на разных уровнях масштабирования. –

0

Я была такая же проблема, однако якорь решение отправленный Майком T не работает для меня.

Что сработало для меня, было преобразование моего исходного изображения в вектор (svg). Это остановило мой пользовательский маркер от перемещения на карте всякий раз, когда я увеличивал или уменьшал масштаб с карты.