What is the bug?
Hi,
I've been playing around with Bing Maps implementation (see here). Although it works properly in a default setup, when setting retinaMode: true in TileLayer options, markers I used to position on the map somewhere in the UK, get distorted and translated somewhere in between New Zealand and Antractica.
I would appreciate some help on the subject.
Thanks.
What is the expected behaviour?
It should work like it works for any other TileLayer implementation. I have tried it with OSM and Azure Maps and it works fine.
How can we reproduce this issue?
class BingTileProvider extends TileProvider {
BingTileProvider({
super.headers,
});
String _getQuadKey(int x, int y, int z) {
final StringBuffer quadKey = StringBuffer();
for (int i = z; i > 0; i--) {
int digit = 0;
final int mask = 1 << (i - 1);
if ((x & mask) != 0) {
digit++;
}
if ((y & mask) != 0) {
digit++;
digit++;
}
quadKey.write(digit);
}
return quadKey.toString();
}
@override
String getTileUrl(Coords<num> coords, TileLayer options) {
String url = options.urlTemplate ?? '';
return url.replaceAll('{subdomain}', 't0').replaceAll('{quadkey}',
_getQuadKey(coords.x.toInt(), coords.y.toInt(), coords.z.toInt()))
.replaceAll('{culture}', 'en-US');
}
@override
ImageProvider<Object> getImage(Coords<num> coords, TileLayer options) {
return NetworkImage(getTileUrl(coords, options));
}
}
class BingRoadLayer extends StatelessWidget {
@override
Widget build(BuildContext context) {
return FutureBuilder(
future: http.get(Uri.parse(
'http://dev.virtualearth.net/REST/V1/Imagery/Metadata/RoadOnDemand?output=json&include=ImageryProviders&key=[YOUR_API_KEY]')),
builder: (context, response) {
if (response.connectionState == ConnectionState.waiting) {
return SizedBox();
}
return TileLayer(
maxZoom: 21,
urlTemplate: jsonDecode(response.data!.body)['resourceSets'][0]
['resources'][0]['imageUrl'],
tileProvider: BingTileProvider(),
retinaMode: true,
);
},
);
}
}
Do you have a potential solution?
Not really.
Can you provide any other information?
No response
Platforms Affected
Android
Severity
Obtrusive: Prevents normal functioning but causes no errors in the console
Frequency
Consistently: Always occurs at the same time and location
Requirements
What is the bug?
Hi,
I've been playing around with Bing Maps implementation (see here). Although it works properly in a default setup, when setting
retinaMode: trueinTileLayeroptions, markers I used to position on the map somewhere in the UK, get distorted and translated somewhere in between New Zealand and Antractica.I would appreciate some help on the subject.
Thanks.
What is the expected behaviour?
It should work like it works for any other TileLayer implementation. I have tried it with OSM and Azure Maps and it works fine.
How can we reproduce this issue?
Do you have a potential solution?
Not really.
Can you provide any other information?
No response
Platforms Affected
Android
Severity
Obtrusive: Prevents normal functioning but causes no errors in the console
Frequency
Consistently: Always occurs at the same time and location
Requirements
flutter doctorfinds no relevant issues