как и при расчете границ - вы можете сделать это легко, пройдя массив ваших координат и расширив прямоугольник границ, если точка выпадет. Первая координата - это начало. Я не знаком с C #, но есть алгоритм, использующий псевдокод:
points = Array of coord(lat, lng)
bounds = object {
top: null
left: null
right: null
bottom: null
function extend(coord: (lat, lng))
{
if (this.top == null) // empty
{
this.top = coord.lat; this.bottom = coord.lat;
this.left = coord.lng; this.right = coord.lng;
}
else
{
if (coord.lng < this.left) this.left = coord.lng;
if (coord.lat < this.bottom) this.bottom = coord.lat;
if (coord.lng > this.right) this.right = coord.lng;
if (coord.lat > this.top) this.top = coord.lat;
}
}
}
Но, конечно, гораздо проще использовать уже написанную функциональность Google.
Уровень масштабирования можно рассчитать по размеру ограничивающего прямоугольника (например, вы можете найти таблицу со скоростями в км или милях на пиксель, или приблизительной шириной или картой), но наиболее удобным способом является map.fitBounds (bounds)