powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Яндекс карты + FoxPro
24 сообщений из 24, страница 1 из 1
Яндекс карты + FoxPro
    #38997554
Фотография AngelOKES
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может быть вопрос и не в ту группу, но так как я это реализую на фоксе, то буду делиться здесь.
Пишу сейчас программу, которая будет работать с яндекс.картами и в принципе уже есть результаты.
Смысл как оно работает, я формирую HTML-страничку и загружаю её в Axtive-компонент на форме и всё отображается как нужно
Изучал возможности API-программирования и встретился с такой проблемой, что сам её решить никак не могу и очень надеюсь, что кто-нибудь сталкивался с данной проблемой и направит меня на путь истинный.


вот код отображения одного объекта:
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
If File('c:\1\1.html')  && Does file exist?
	ERASE 'c:\1\1.html'
	gnFile = Fcreate('c:\1\1.html')  && If not, create it
Else
	gnFile = Fcreate('c:\1\1.html')  && If not, create it
Endif

TEXT TO lcSQL TEXTMERGE NOSHOW
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  
  <html xmlns="http://www.w3.org/1999/xhtml">  
  <head>  
    
          <!-- Загружаем API-->  
          <script src="http://api-maps.yandex.ru/2.0/?load=package.standard&mode=debug&lang=ru-RU" type="text/javascript"></script>  
          <script type="text/javascript">  
    
    
          ymaps.ready(init)  
          
         function init () {  
  		var Par1=[<<mBegin>>,<<mEnd>>];  
  		var Par2="<<mZoom>>";  
  		//Создание экземпляра карты и его привязка к контейнеру с id="YMapsID"   
  		var myMap = new ymaps.Map("YMapsID", {          
         		center: Par1,						// Центр карты     
  	        zoom: Par2,						// Коэффициент масштабирования  
       		type: "yandex#map"					// Тип карты: yandex#map", "yandex#satellite", "yandex#hybrid", "yandex#publicMap  
      		});  
  		myMap.controls.add("mapTools");				// Добавление стандартного набора кнопок	  
  		myMap.controls.add("zoomControl");			// Добавление кнопки изменения масштаба   
  		myMap.controls.add("typeSelector");			// Добавление списка типов карты  
    
  		// Будем отслеживать изменение уровня масштабирования и расположение карты   
  		myMap.events.add('boundschange', function (event) {  
  			document.getElementById('X2').value=event.get('newCenter');  
  			document.getElementById('X3').value=event.get('newZoom');  
  		});  

  		// Создание метки   
  		var myPlacemark = new ymaps.Placemark(          
  	        Par1, 											// Координаты метки  
  		{ hintContent: 'Передвинь меня'},   
  		{ iconImageHref: 'http://api.yandex.ru/maps/doc/jsapi/2.x/examples/images/myIcon.gif', 	// картинка иконки  
  	          iconImageSize: [30, 42],   								// размеры картинки  
  	          iconImageOffset: [-3, -42], 								// смещение картинки  
  		  draggable: true									// Опции метки: - флаг перетаскивания метки    
  	        });  
    
  		// При перемещение метки фиксируем её координаты  
  		myPlacemark.events.add('dragend', function (e) {  
  		document.getElementById('X1').value=this.geometry.getCoordinates();  
  		},myPlacemark);  
                
  		// Добавление метки на карту  
  		myMap.geoObjects.add(myPlacemark);  
    
  		document.getElementById('X1').value=Par1;  
  		document.getElementById('X2').value=Par1;  
  		document.getElementById('X3').value=Par2;  
          };  

          </script>   
  </head>  
  <body leftmargin=0 topmargin=0>  
    
  	<div id="YMapsID" style="width: 800px; height: 600px"></div>  
    
  	Координаты	<INPUT NAME="X1" ID="X1" ><BR>  
  	Центр		<INPUT NAME="X2" ID="X2" ><BR>  
  	Масштаб		<INPUT NAME="X3" ID="X3" ><BR>  
    
    
  </body>  
  </html>
ENDTEXT

=Fwrite(gnFile, lcSQL)
=Fclose(gnFile)

Thisform.Karta.Navigate2("c:\1\1.html")
thisform.refresh



Или вот отображение двух элементов и соединение их линией
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
If File('c:\GrPr\1.html')  && Does file exist?
	Erase 'c:\GrPr\1.html'
	gnFile = Fcreate('c:\GrPr\1.html')  && If not, create it
Else
	gnFile = Fcreate('c:\GrPr\1.html')  && If not, create it
Endif

TEXT TO lcSQL TEXTMERGE NOSHOW
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  
  <html xmlns="http://www.w3.org/1999/xhtml">  
  <head>  
    
          <!-- Загружаем API-->  
          <script src="http://api-maps.yandex.ru/2.0/?load=package.standard&mode=debug&lang=ru-RU" type="text/javascript"></script>  
          <script type="text/javascript">  

     ymaps.ready(init)
     function init () { 
     var myMap = new ymaps.Map('map', {
            center: [51.78, 55.14],
            zoom: 15
        }, {
            searchControlProvider: 'yandex#search'
        });
 
        myPlacemark1 = new ymaps.Placemark([51.781, 55.141], {
            hintContent: 'Собственный значок метки'
        }, {
            // Опции.
            // Необходимо указать данный тип макета.
            iconLayout: 'default#image',
            // Своё изображение иконки метки.
            iconImageHref: 'circle_green.png',
            // Размеры метки.
            iconImageSize: [30, 42],
            // Смещение левого верхнего угла иконки относительно
            // её "ножки" (точки привязки).
            iconImageOffset: [-3, -42]
        });
 
        myPlacemark2 = new ymaps.Placemark([51.783, 55.143], {
            hintContent: 'Собственный значок метки'
        }, {
            // Опции.
            // Необходимо указать данный тип макета.
            iconLayout: 'default#image',
            // Своё изображение иконки метки.
            iconImageHref: 'circle_red.png',
            // Размеры метки.
            iconImageSize: [30, 42],
            // Смещение левого верхнего угла иконки относительно
            // её "ножки" (точки привязки).
            iconImageOffset: [-3, -42]
        });

    myMap.geoObjects.add(myPlacemark1);
    myMap.geoObjects.add(myPlacemark2);

    var myGeoObject = new ymaps.GeoObject({
            // Описываем геометрию геообъекта.
            geometry: {
                // Тип геометрии - "Ломаная линия".
                type: "LineString",
                // Указываем координаты вершин ломаной.
                coordinates: [
                    [55.80, 37.50],
                    [55.70, 37.40]
                ]
            },
            // Описываем свойства геообъекта.
            properties:{
                // Содержимое хинта.
                hintContent: "Я геообъект",
                // Содержимое балуна.
                balloonContent: "Меня можно перетащить"
            }
        }, {
            // Задаем опции геообъекта.
            // Включаем возможность перетаскивания ломаной.
            draggable: true,
            // Цвет линии.
            strokeColor: "#FFFF00",
            // Ширина линии.
            strokeWidth: 5
        });
    myMap.geoObjects.add(myGeoObject);
};

</script>
  </head>
  <body>
      <div id="map" style="width: 800px; height: 600px"></div>
  </body>
  </html>
ENDTEXT

=Fwrite(gnFile, lcSQL)
=Fclose(gnFile)

Thisform.Karta.Navigate2("c:\GrPr\1.html")



Вот тут начинает ругаться, что метод GeoObject не поддерживается и ничего не могу с этим поделать, куда хоть копать не знаю
...
Рейтинг: 0 / 0
Яндекс карты + FoxPro
    #38998027
Фотография AngelOKES
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можете удалять тему, решение найдено!
...
Рейтинг: 0 / 0
Яндекс карты + FoxPro
    #38998030
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лучше бы написал что за решение. Может еще кому пригодится в будущем.
...
Рейтинг: 0 / 0
Яндекс карты + FoxPro
    #39006882
Фотография AngelOKES
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T,
Да я бы с удовольствием, но код уже большой и тем более сейчас уже сделал автоподгрузку из базы тысяч объектов, если будет интересно могу выложить решение, тем более проект почти завершён...
...
Рейтинг: 0 / 0
Яндекс карты + FoxPro
    #39026000
gift85
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Было бы интересно посмотреть на решение!
...
Рейтинг: 0 / 0
Яндекс карты + FoxPro
    #39026335
Фотография AngelOKES
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gift85, На форме размещал объект Microsoft Web Browser. но можно просто сформировать страничку и использовать её автономно:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
179.
180.
181.
182.
183.
184.
185.
186.
187.
188.
189.
190.
191.
192.
193.
194.
195.
196.
197.
198.
199.
200.
201.
202.
203.
204.
205.
206.
207.
208.
209.
210.
211.
212.
213.
214.
215.
216.
217.
218.
219.
220.
221.
222.
223.
224.
225.
226.
227.
228.
229.
230.
231.
232.
233.
234.
235.
236.
237.
238.
239.
240.
241.
242.
243.
244.
245.
246.
247.
248.
249.
250.
251.
252.
253.
254.
255.
Public mBegin, mEnd, mZoom
Store "" To mS1, mS2, mS4, mS5, mS6, mS7, mStpf, mSrp, mListPS, mListPSc, mremark
Store 1 To mRekLB1
Set Decimals To 9
Set Default To c:\Karta
#Define CRLF Chr(13)+Chr(10)
FormMax(Thisform,560,793,800)

mWidth=Thisform.Karta.Width-40
mHeigth=Thisform.Karta.Height-50

aaa=SQLConnect('abon')
bb="SELECT mkr, nr, remark, kfull, zoom FROM Raion_ot where mkr in ('01','02','03','04','05','27','19','30','40','50','60') order by remark, nr"
bb="SELECT mkr, nr, remark, kfull, zoom FROM Raion_ot where mkr not in ('00','13','21','99') order by remark, nr"
SQLExec(aaa,bb,'q1')

mS2="new ymaps.control.ListBoxItem('Вся область'), "+CRLF
mS4="myLB1.get(0).events.add('click', function () {map.setCenter([52.5,56],7.5);myLB1.state.set('expanded', false);});"+CRLF
Select q1
Scan
	mS2=mS2+"new ymaps.control.ListBoxItem('"+Allt(q1.nr)+"'), "+CRLF
	mS4=mS4+"myLB1.get("+Allt(Str(mRekLB1))+").events.add('click', function () {map.setCenter(["
	mS4=mS4+Allt(kfull)+"],"+Allt(Str(q1.Zoom))+");myLB1.state.set('expanded', false);});"+CRLF
	mRekLB1=mRekLB1+1
Endscan

bb="Select kodps, q2.npg, q1.npf, rp, npf1, NameD, q1.kod, q1.mkr, k1, k2, convert(float,k1) as k3, convert(float,k2) as k4 "
bb=bb+" From sprtp q1 left join SprKartaPS q2 on q1.kodps=q2.kod Where kodps<>0 Order By kodps, rp, q1.npf, npf1, NameD, q1.mkr"
SQLExec(aaa,bb,'qTP')
Sele qTp
Store '' To mPs, mRp, mNpf, mNpf1
Store 0 To mNom1, mNom2, mNom3, mNom4
Scan
	If mPs<>npg
		mNom1=mNom1+1
		Store 0 To mNom3
		Store -7 To mNom2
		mListPSc=mListPSc+Iif(Len(Allt(mPs))<>0,"});"+CRLF,"")
		mPs=npg
		kGPP="["+Allt(Str(k3,12,9))+","+Allt(Str(k4,12,9))+"]"
		mListPS=mListPS+"new ymaps.control.ListBoxItem('"+Allt(mPs)+"'), "+CRLF
		mListPSc=mListPSc+"myLB2.get("+Allt(Str(mNom1-1))+").events.add('click', function () {map.setCenter("
		mListPSc=mListPSc+kGPP+",15);myLB2.state.set('expanded', false);"
		mListPSc=mListPSc+"map.geoObjects.each(function(context) {map.geoObjects.remove(context);});"+CRLF
		mNt="my"+Allt(Str(kodps))+"TPS"+Allt(Str(Recno()))
		mListPSc=mListPSc+"var "+mNt+"= new ymaps.Placemark("+kGPP+", {hintContent: '"+Allt(mPs)+"'"
		mListPSc=mListPSc+"}, {iconLayout: 'default#image', iconImageHref: 'PS-2.png', iconImageSize: [30, 30], iconImageOffset: [-15, -15]});"+CRLF
		mListPSc=mListPSc+"map.geoObjects.add("+mNt+");"+CRLF
	Endif
	mNom2=mNom2+Iif(mNpf<>npf Or (mNpf1<>npf1 And Len(Allt(rp))<>0 And Allt(rp)<>'-'),1,0)
	mNom3=Iif(mNpf<>npf Or (mNpf1<>npf1 And Len(Allt(rp))<>0 And Allt(rp)<>'-'),0,mNom3)
	If mRp<>Allt(rp) And Len(Allt(rp))<>0 And Allt(rp)<>'-'
		mRp=Allt(rp)
		mNom2=mNom2+2
		kRP="["+Allt(Str(k3-0.0005*mNom2,12,9))+","+Allt(Str(k4-0.01,12,9))+"]"
		mNt="my"+Allt(Str(kodps))+"TRP"+Allt(Str(Recno()))
		mListPSc=mListPSc+"var "+mNt+"= new ymaps.Placemark("+kRP+", {hintContent: '"+mRp+"'"
		mListPSc=mListPSc+"}, {iconLayout: 'default#image', iconImageHref: 'RP-2.png', iconImageSize: [20, 20], iconImageOffset: [-10, -10]});"+CRLF
		mListPSc=mListPSc+"map.geoObjects.add("+mNt+");"+CRLF
	Endif
	kTP="["+Allt(Str(k3-0.0005*mNom2,12,9))+","+Allt(Str(Iif(Allt(rp)<>'-',k4-0.015-0.0005*mNom3,k4+0.005+0.0005*mNom3),12,9))+"]"
	mNt="my"+Allt(Str(kodps))+"TTP"+Allt(Str(Recno()))

	bb="select data1, data2, q3.naim1 as priz1, q2.naim1 as Prich1 from DisVed q1 left join DisSprPrich q2 on q1.prich=q2.kod1+q2.kod2 "
	bb=bb+"left join DisSprPriz q3 on q1.priz=q3.kod2 where year(data1)=2015 and kodtp2="+Allt(Str(kod))+" order by data1"
	SQLExec(aaa,bb,'q2')
	If Reccount('q2')>0
		mNameIm='TPF.png'
		mText=Allt(qTp.NameD)+'('
		Select q2
		Scan
			mText=mText+q2.priz1+')('+q2.Prich1+')('+Left(Dtoc(data1),10)+'-'+Left(Dtoc(data2),10)+') '
		Endscan
	Else
		mNameIm='TP-2.png'
		mText=Allt(qTp.NameD)
	Endif
	Sele qTp

	mListPSc=mListPSc+"var "+mNt+"= new ymaps.Placemark("+kTP+", {hintContent: '"+mText+"'"
	mListPSc=mListPSc+"}, {iconLayout: 'default#image', iconImageHref: '"+mNameIm+"', iconImageSize: [10, 10], iconImageOffset: [-5, -5]});"+CRLF
	mListPSc=mListPSc+"map.geoObjects.add("+mNt+");"+CRLF
	mNom3=mNom3+1
	If mNpf<>npf
		mNpf=npf
		mNl="my"+Allt(Str(kodps))+"LF"+Allt(Str(Recno()))
		Kf=Iif(Allt(rp)<>'-',kRP,kTP)
		mColor=Iif(Allt(rp)<>'-','#0000ff','#00ff00')
		mListPSc=mListPSc+"var "+mNl+" = new ymaps.GeoObject({geometry: {type: 'LineString', coordinates: ["+kGPP+","+Kf+"]},"
		mListPSc=mListPSc+"properties:{hintContent: '"+Allt(npf)+"'}}, {geodesic: true,	strokeColor: '"+mColor+"',	strokeWidth: 2});"+CRLF
		mListPSc=mListPSc+"map.geoObjects.add("+mNl+");"+CRLF
	Endif
	If mNpf1<>npf1 And Len(Allt(rp))<>0 And Allt(rp)<>'-'
		mNpf1=npf1
		mNl="my"+Allt(Str(kodps))+"LF1"+Allt(Str(Recno()))
		mListPSc=mListPSc+"var "+mNl+" = new ymaps.GeoObject({geometry: {type: 'LineString', coordinates: ["+kRP+","+kTP+"]},"
		mListPSc=mListPSc+"properties:{hintContent: '"+Allt(npf1)+"'}}, {draggable: true,	strokeColor: '#00ff00',	strokeWidth: 2});"+CRLF
		mListPSc=mListPSc+"map.geoObjects.add("+mNl+");"+CRLF
	Endif
Endscan
mListPSc=mListPSc+"});"+CRLF

bb="select k1, k2, npg, kod, mkr, convert(float,k1) as k3, convert(float,k2) as k4 from SprKartaPS"
SQLExec(aaa,bb,'q1')
mS5=mS5+"myPlg = [];"
Sele q1
Scan
	mNom1=Allt(Str(Recno()-1))                                            && Порядковый номер элемента кластера подстанций ГПП
	KGPP1="["+Allt(Str(q1.k3,12,9))+","+Allt(Str(q1.k4,12,9))+"]"         && Координата ПС
	mS5=mS5+"myPlg["+mNom1+"] = new ymaps.Placemark("+KGPP1+", {hintContent: '"+Allt(q1.npg)+"'"
	mS5=mS5+"}, {iconLayout: 'default#image', iconImageHref: 'PS-2.png', iconImageSize: [20, 20], iconImageOffset: [-4, -4]});"+CRLF
Endscan

bb="select k1, k2, rp from SprKartaRP"
SQLExec(aaa,bb,'q1')
Select q1
mSrp=mSrp+"myPlrp = [];"
Scan
	mNomer=Allt(Str(Recno()-1))
	mSrp=mSrp+"myPlrp["+mNomer+"] = new ymaps.Placemark(["+Allt(q1.k1)+","+Allt(q1.k2)+"], {hintContent: '"+Allt(q1.rp)+"'"
	mSrp=mSrp+"}, {iconLayout: 'default#image', iconImageHref: 'RP-2.png', iconImageSize: [20, 20], iconImageOffset: [-4, -4]});"+CRLF
Endscan

bb="select k1, k2, npt, kod from SprKartaTP"
SQLExec(aaa,bb,'q1')
bb="select k1, k2, npf, kod from SprKartaTPPS"
SQLExec(aaa,bb,'q2')
bb="select k1, k2, npt, kod, data1 from SprKartaDisVed where YEAR(data1)=2015"
SQLExec(aaa,bb,'q4')
Select q1
mS6=mS6+"myPl = [];"
Scan
	mNomer=Allt(Str(Recno()-1))
	mK1=Allt(k1)+","+Allt(k2)
	mS6=mS6+"myPl["+mNomer+"] = new ymaps.Placemark(["+mK1+"], {hintContent: '"+Allt(npt)+"'"
	mS6=mS6+"}, {iconLayout: 'default#image', iconImageHref: 'TP-2.png', iconImageSize: [15, 15], iconImageOffset: [-4, -4]});"+CRLF
	Select * From q2 Where kod=q1.kod Into Cursor q3
	If Reccount('q3')=1
		mK2=Allt(q3.k1)+","+Allt(q3.k2)
		mS7=mS7+"var myL"+mNomer+" = new ymaps.GeoObject({geometry: {type: 'LineString', coordinates: [["+mK1+"],["+mK2+"]]},"
		mS7=mS7+"properties:{hintContent: '"+Allt(npf)+"'}}, {draggable: true,	strokeColor: '#0000ff',	strokeWidth: 1});"+CRLF
		mS7=mS7+"map.geoObjects.add(myL"+mNomer+");"+CRLF
	Endif
	Select * From q4 Where kod=q1.kod Into Cursor q5
	If Reccount('q5')=1
		mK3=Allt(q1.k1)+","+Allt(q1.k2)
		mStpf=mStpf+"myPlf"+mNomer+" = new ymaps.Placemark(["+mK3+"], {hintContent: '"+Allt(npt)+'('+Left(Dtoc(data1),10)+")'"
		mStpf=mStpf+"}, {iconLayout: 'default#image', iconImageHref: 'TPF.png', iconImageSize: [20, 20], iconImageOffset: [-4, -4]});"+CRLF
		mStpf=mStpf+"map.geoObjects.add(myPlf"+mNomer+");"+CRLF
	Endif
Endscan

If File('c:\Karta\1.html')  && Does file exist?
	Erase 'c:\Karta\1.html'
	gnFile = Fcreate('c:\Karta\1.html')  && If not, create it
Else
	gnFile = Fcreate('c:\Karta\1.html')  && If not, create it
Endif

TEXT TO lcSQL TEXTMERGE NOSHOW PRETEXT 7
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>Программный комплекс ГУП "ОКЭС" по Оренбургской области</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <script src="https://api-maps.yandex.ru/2.0-stable/?load=package.full&lang=ru-RU" type="text/javascript"></script>
    <script type="text/javascript">

ymaps.ready(init);
function init () {
    var map = new ymaps.Map('map', {center: [52.5,56], zoom: 7.5},{minZoom: 7});
    		map.controls.add("mapTools");				  // Добавление стандартного набора кнопок
    		map.controls.add("zoomControl");			// Добавление кнопки изменения масштаба
  	  	map.controls.add("typeSelector");			// Добавление списка типов карты
  	  	map.controls.add('searchControl');    // Поиск
		var myLB1 = new ymaps.control.ListBox({
    data: {title: 'Районные участки электрических сетей (РУЭС):'},
    items: [<<mS2>>]});<<mS4>>
		myLB1.state.set('expanded', true);
    myLB1.state.set('expandOnClick', true);
    map.controls.add(myLB1, {float: 'none', top: 5, left: <<m.mWidth/3>>})

		var myLB2 = new ymaps.control.ListBox({
    data: {title: 'ПС:'},
    items: [<<mListPS>>]});<<mListPSc>>
    myLB2.state.set('expandOnClick', true);
    map.controls.add(myLB2, {float: 'none', top: 5, right: 200})

    <<mS5>><<mS6>><<mSrp>>

		var myB2 = new ymaps.control.Button({
    data: {image: 'images/button.jpg', content: 'Показать тех.отключения', title: ''}});
		myB2.events.add('click', function () {<<mStpf>>});
    map.controls.add(myB2, {float: 'none', bottom: 5, left: 200})

    map.events.add('dblclick', function (e) {map.hint.open(e.get('coords'), '"+Allt(q1.npg)+"');});

		var myB3 = new ymaps.control.Button({
    data: {image: 'images/button.jpg', content: 'Показать линии питания ТП от ПС', title: ''}});
		myB3.events.add('click', function () {<<mS7>>});
    map.controls.add(myB3, {float: 'none', bottom: 5, left: 450})

		var myB1 = new ymaps.control.Button({
    data: {image: 'images/button.jpg', content: 'Выделить область', title: 'Будет работать существенно медленнее'}});
		myB1.events.add('click', function () {
		  map.setCenter([52.5,56],7.5);
	    ymaps.regions.load('KZ', {quality: 2}).then(function (res) {
			var regions1 = res.geoObjects;
    	regions1.each(function (reg) {reg.options.set({fillColor: '#e6e6e6', strokeColor: '#e6e6e6'})});
    	map.geoObjects.add(regions1);});

    	ymaps.regions.load('RU', {quality: 2}).then(function (res) {
			var regions2 = res.geoObjects;
    	regions2.each(function (reg) {
    	if (reg.properties.get('osmId') != 77669) {reg.options.set({fillColor: '#e6e6e6', strokeColor: '#e6e6e6'})}});
    	regions2.each(function (reg) {
    	if (reg.properties.get('osmId') == 77669) {reg.options.set({fillColor: '#e6e6e6', strokeColor: '#ff0000', opacity: .0})}});
    	map.geoObjects.add(regions2);});
		});
    map.controls.add(myB1, {float: 'none', bottom: 5, left: 5})

    clusterer1 = new ymaps.Clusterer({preset: 'twirl#darkgreenClusterIcons', clusterDisableClickZoom: true});
    clusterer1.add(myPl);
    map.geoObjects.add(clusterer1);
    clusterer3 = new ymaps.Clusterer({preset: 'twirl#darkorangeClusterIcons', clusterDisableClickZoom: true});
    clusterer3.add(myPlg);
    map.geoObjects.add(clusterer3);
    clusterRP = new ymaps.Clusterer({preset: 'twirl#darkblueClusterIcons', clusterDisableClickZoom: true});
    clusterRP.add(myPlrp);
    map.geoObjects.add(clusterRP);

		var myB4 = new ymaps.control.Button({
    data: {image: 'images/button.jpg', content: 'Удалить все объекты', title: ''}});
		myB4.events.add('click', function () {
		    map.geoObjects.each(function(context) {
        map.geoObjects.remove(context);
    });
		});
    map.controls.add(myB4, {float: 'none', bottom: 5, left: 750})
}
</script>
  </head>
<body>
   <div id="map" style="width:<<m.mWidth>>px; height:<<m.mHeigth>>px"></div>
</body>
</html>
ENDTEXT

=Fwrite(gnFile, Allt(Strconv(lcSQL,9)))
=Fclose(gnFile)

*Thisform.Karta.Navigate("c:\GrPr\1.html")
Thisform.Karta.Navigate2("file:///C:/Karta/1.html")

Thisform.Refresh



Если будут вопросы или предложения пишите, главное помидорами не закидывайте
...
Рейтинг: 0 / 0
Яндекс карты + FoxPro
    #39027744
gift85
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AngelOKES,
Решение интересное, спасибо, есть мелкие косячки в коде, но сильно не влияют.
Благодаря Вам самому получилось вникнуть во все это и использовать у себя такой метод. Единственное что пока не могу понять - апи 2.0 - все нормально, 2.1 - не хочет работать правильно, MS web browser выдает ошибку скрипта на странице, а отладка в хроме матерится на неподдерживаемый канвас. И придется придумывать\вникать в алгоритм умного построения маршрута, чего яндекс не делает, насколько я понял
...
Рейтинг: 0 / 0
Яндекс карты + FoxPro
    #39028266
Фотография AngelOKES
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gift85, Здесь приходится много экспериментировать, инфы почти нет, спецы на форуме помогать совсем не торопятся, зачастую наоборот мешают. Фактически это всё сделано методом перебора. API 2.0 и 2.1 действительно сильно отличаются, я не смог разобраться, но могу сказать, что 2.1 нифига не поддерживает 2.0, там они очень много команд изменили, удалили или добавили и если честно я так и не понял зачем это всё было нужно, обычно старшая модель всегда должна поддерживать более младшую модель, а тут... А так если честно Java это просто работа через одно место, очень сложно без посторонней помощи...
Косяки я так понимаю в оптимизации некоторых операций, тут я согласен оптимизировать конечно же можно, а по работоспособности вроде бы проблем не было, жалко что весь код не проверишь, так как используются выборки из базы
...
Рейтинг: 0 / 0
Яндекс карты + FoxPro
    #39028303
gift85
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AngelOKES,
У яндекса написано что повышение второй цифры в номере версии = отсутствие обратной поддержки предыдущих.
в целом - если поковыряться у них в песочнице то можно подразобраться, но 2.1 пока не заставить работать, на первый взгляд эта версия интереснее. У 2гис песочницы такой я не нашел, хотя может получится и без нее, правда я так и не понял пока нужно ли там ключ получать)
Мне также с фоксом пришлось начинать - изначально было только IDE девятки, документация и исходные проги на FPD 2.6)
...
Рейтинг: 0 / 0
Яндекс карты + FoxPro
    #39028314
gift85
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Оптимизация - 13 строка не нужна, ибо на 14 ты перезаписываешь эту же переменную другим значением; 22 и 23 строки и другие подобные строки - можно поместить в переменную и за раз - получается лишняя операция сложения; при проверке наличия 'c:\Karta\1.html' - создание этого файла можно вынести - ты это делаешь в любом случае, а так будет на две строки меньше)
Конечно сугубо личное мнение, все должно работать и так)
...
Рейтинг: 0 / 0
Яндекс карты + FoxPro
    #39028381
Фотография AngelOKES
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gift85, Согласен, всё так и есть, а 13 строка у меня была для теста и забыл убрать :)
...
Рейтинг: 0 / 0
Яндекс карты + FoxPro
    #39028457
gift85
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AngelOKES, c 2gis получается примерно тоже что и с яндексом 2.1...
придется вникать в яву..
...
Рейтинг: 0 / 0
Яндекс карты + FoxPro
    #39028653
Фотография AngelOKES
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gift85,
Примерно тоже самое, я изучал эту тему, только в 2GIS как-то всё жестче, чем в Yandex, в правовом аспекте, я как почитал пользовательское соглашение использование данных и решил что оно того не стоит, хотя если очень хочется, то можно договорится... У меня была ещё тема с наложением слоя кадастровой карты, но они так часто меняют свой софт, что ничто не помогает, спецы находят решения, а они уже всё поменяли, так что там только тесное и как я понимаю денежное сотрудничество решит... Спецы оттуда мне явно говорят, что ничего нельзя копировать у них и отображать и помогать отказываются...
...
Рейтинг: 0 / 0
Яндекс карты + FoxPro
    #39028660
Фотография AngelOKES
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ещё было бы интересно загружать типа карты как объект, но пустую, я уже вполне освоился рисовать на ней, а тут столько возможностей, но никак, даже регион один отобразить это такой геммор, в моём решение есть как раз решение этой задачи...
...
Рейтинг: 0 / 0
Яндекс карты + FoxPro
    #39028917
gift85
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AngelOKES,
Самое интересное наверное как вернуть оттуда значения, например координаты полученные при посыле адреса)
...
Рейтинг: 0 / 0
Яндекс карты + FoxPro
    #39029147
Фотография AngelOKES
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gift85, Вы про кадастровую карту?
...
Рейтинг: 0 / 0
Яндекс карты + FoxPro
    #39029206
gift85
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AngelOKES,
про обычную - я посылаю почтовый адрес, и хочется в обратку получить его координаты для записи в базу.
или посылаю два адреса, а в обратку расстояние между ними
...
Рейтинг: 0 / 0
Яндекс карты + FoxPro
    #39029255
Фотография AngelOKES
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gift85, Ну про расстояние я не помню, а вот геокодирование есть примеры в песочнице:
1) прямое геокодирование - https://tech.yandex.ru/maps/jsbox/2.1/direct_geocode
2) Обратное геокодирование - https://tech.yandex.ru/maps/jsbox/2.1/reverse_geocode
...
Рейтинг: 0 / 0
Яндекс карты + FoxPro
    #39029548
gift85
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AngelOKES,
это то понятно, а как это выдать фоксу во время исполнения программы? когда я нажал на адрес из списка адресов в листбоксе - он мне показывает в web browser этот адрес с координатами на карте, а как мне из нее это выдернуть? чтобы отобразить эти координаты допустим в текстбоксе
...
Рейтинг: 0 / 0
Яндекс карты + FoxPro
    #39030545
Фотография AngelOKES
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gift85, Я тебе посоветую использовать список уже в объекте и сразу прописать действия на выбор нужного. Единственное, если будет необходимо запомнить позицию в БД, то тут думаю надо будет осваивать PHP это как самый лучший вариант, из объекта web browser достать что-то я пока не разобрался, может быть и можно, но я не нашёл такого решения. А PHP в данном случае решит любые задачи с БД. Примеры в инете есть, найти можно
...
Рейтинг: 0 / 0
Яндекс карты + FoxPro
    #39031056
gift85
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AngelOKES,
будем думать)
...
Рейтинг: 0 / 0
Яндекс карты + FoxPro
    #39031224
Фотография AngelOKES
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gift85, Если что интересное придумаешь напиши здесь решение, очень интересно будет глянуть
...
Рейтинг: 0 / 0
Яндекс карты + FoxPro
    #39031904
GoogleMap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть хорошии FoxPro add-on для работы с Google Map - GMap4Any1. Много чего можно делать используя "обернутые" Google Map сервисы.
...
Рейтинг: 0 / 0
Яндекс карты + FoxPro
    #39032005
Фотография AngelOKES
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GoogleMap, 100 баксов однако стоит и ещё не факт, что оно подойдёт
...
Рейтинг: 0 / 0
24 сообщений из 24, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Яндекс карты + FoxPro
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]