When a draggable marker is dragged and dropped, a server side markerDragListener can be invoked passing a MarkerDragEvent that contains a reference to the dragged marker whose positon is updated already.
Documentation<script type="text/javascript" src="https://maps.google.com/maps/api/js?sensor=false"></script> <h:form prependId="false"> <p:growl id="growl" showDetail="true" /> <p:gmap id="gmap" center="36.890257,30.707417" zoom="13" type="HYBRID" model="#{draggableMarkersView.draggableModel}" style="width:100%;height:400px"> <p:ajax event="markerDrag" listener="#{draggableMarkersView.onMarkerDrag}" update="growl" /> </p:gmap> </h:form>
@Named @ViewScoped public class DraggableMarkersView implements Serializable { private MapModel draggableModel; private Marker marker; @PostConstruct public void init() { draggableModel = new DefaultMapModel(); //Shared coordinates LatLng coord1 = new LatLng(36.879466, 30.667648); LatLng coord2 = new LatLng(36.883707, 30.689216); LatLng coord3 = new LatLng(36.879703, 30.706707); LatLng coord4 = new LatLng(36.885233, 30.702323); //Draggable draggableModel.addOverlay(new Marker(coord1, "Konyaalti")); draggableModel.addOverlay(new Marker(coord2, "Ataturk Parki")); draggableModel.addOverlay(new Marker(coord3, "Karaalioglu Parki")); draggableModel.addOverlay(new Marker(coord4, "Kaleici")); for(Marker premarker : draggableModel.getMarkers()) { premarker.setDraggable(true); } } public MapModel getDraggableModel() { return draggableModel; } public void onMarkerDrag(MarkerDragEvent event) { marker = event.getMarker(); FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "Marker Dragged", "Lat:" + marker.getLatlng().getLat() + ", Lng:" + marker.getLatlng().getLng())); } }