2012-02-16 5 views
3

Я видел, как это сделано здесь: http://www.somebody4u.com/Profile/LiveКак добавить круг радиуса в Bing Maps?

, но я не могу найти способ сделать это с API (AJAX).

+0

4 других, что земля здесь: Бинг карты v8 круг ответ может быть получен отсюда: [Бинг форум MSDN ответ] (https://social.msdn.microsoft.com/Forums/en-US/bd041bbd- b4be-40b6-ae68-8b48aba83b64/how-to-create-precision-circle-in-bing-map-v8? forum = bingmapsajax) – RyBolt

ответ

12

Bing Maps V7 не включает метод ничьей.

Окружность должна быть «аппроксимирована» путем рисования нескольких небольших сегментов.

var key = .....; // API access key 

var MM = Microsoft.Maps; 
var R = 6371; // earth's mean radius in km 

var map = new Microsoft.Maps.Map(this.element[0], {credentials: key, disableKeyboardInput: true}); 

var radius = ...;  //radius of the circle 
var latitude = ...; //latitude of the circle center 
var longitude = ...; //longitude of the circle center 

var backgroundColor = new Microsoft.Maps.Color(10, 100, 0, 0); 
var borderColor = new Microsoft.Maps.Color(150, 200, 0, 0); 

var lat = (latitude * Math.PI)/180;  
var lon = (longitude * Math.PI)/180; 
var d = parseFloat(radius)/R; 
var circlePoints = new Array(); 

for (x = 0; x <= 360; x += 5) { 
    var p2 = new MM.Location(0, 0); 
    brng = x * Math.PI/180; 
    p2.latitude = Math.asin(Math.sin(lat) * Math.cos(d) + Math.cos(lat) * Math.sin(d) * Math.cos(brng)); 

    p2.longitude = ((lon + Math.atan2(Math.sin(brng) * Math.sin(d) * Math.cos(lat), 
        Math.cos(d) - Math.sin(lat) * Math.sin(p2.latitude))) * 180)/Math.PI; 
      p2.latitude = (p2.latitude * 180)/Math.PI; 
      circlePoints.push(p2); 
} 

var polygon = new MM.Polygon(circlePoints, { fillColor: backgroundColor, strokeColor: borderColor, strokeThickness: 1 }); 

map.entities.push(polygon); 
+0

Отлично! Большое спасибо. –

Смежные вопросы