onLocationMessageReceived
Triggered when a message sharing location details is received.
Received properties
Along with the Base, Ephemeral, and Replyable properties,
a WireMessage.Location object includes:
- coordinates –
latitudeandlongitudeas floating point numbers. - name - Location description.
- zoom - Google Maps zoom level.
Sample usage
Calculate user distance from Wire headquarters
- Kotlin
- Java
override suspend fun onLocationMessageReceived(wireMessage: WireMessage.Location) {
// Wire HQ in Berlin
val hqLat = 52.5240008
val hqLon = 13.4025010
// User location
val lat = wireMessage.latitude
val lon = wireMessage.longitude
// Simple approximate distance (in km)
val latDiff = lat - hqLat
val lonDiff = (lon - hqLon) * kotlin.math.cos(Math.toRadians((lat + hqLat) / 2))
val distanceKm = kotlin.math.sqrt(latDiff * latDiff + lonDiff * lonDiff) * 111.0
val message = WireMessage.Text.createReply(
conversationId = wireMessage.conversationId,
text = "You are $distanceKm km away from Wire GmbH headquarters.",
originalMessage = wireMessage
)
manager.sendMessageSuspending(message = message)
}
@Override
public void onLocationMessageReceived(@NotNull WireMessage.Location wireMessage) {
// Wire HQ in Berlin
double hqLat = 52.5240008;
double hqLon = 13.4025010;
// User location
double lat = wireMessage.latitude();
double lon = wireMessage.longitude();
// Simple approximate distance (in km)
double latDiff = lat - hqLat;
double lonDiff = (lon - hqLon) * Math.cos(Math.toRadians((lat + hqLat) / 2.0));
double distanceKm = Math.sqrt(latDiff * latDiff + lonDiff * lonDiff) * 111.0;
WireMessage.Text message = WireMessage.Text.createReply(
wireMessage.conversationId(),
"You are " + distanceKm + " km away from Wire GmbH headquarters.",
List.of(),
List.of(),
wireMessage,
null
);
getManager().sendMessage(message);
}