PDA

View Full Version : Google Maps



niko2008
یک شنبه 17 آبان 1394, 17:33 عصر
با سلام خدمت اساتید محترم میخواستم ارتباط Google Maps با vb6 چطوریه؟
در صورت امکان چطوری میتوان با استفاده از کد نویسی چند نقطه رو مارک دار کرد؟

meys34
یک شنبه 17 آبان 1394, 21:25 عصر
سلام

دو حالت برای استفاده از GoogleMap وجود داره:

1- Google Map Static: که در واقع لینک عکس از نقشه رو میده:


به سایت زیر مراجعه کنید:

http://staticmapmaker.com/google/

تنظیمات خود رو تعیین کنید، نقاط رو اضافه کنید...

عکس رو ذخیره و در برنامه خود استفاده کنید...

برای مثال:

http://maps.googleapis.com/maps/api/staticmap?center=tehran&zoom=10&scale=false&size=600x300&maptype=roadmap&format=png&visual_refresh=true&markers=icon:Barnamenevis.org%7Cshadow:true%7Cazad i+sq,tehran

http://maps.googleapis.com/maps/api/staticmap?center=tehran&zoom=10&scale=false&size=600x300&maptype=roadmap&format=png&visual_refresh=true&markers=icon:Barnamenevis.org%7Cshadow:true%7Cazad i+sq,tehran

من این حالت رو ترجیح میدم... هرچند دومی قشنگتره ولی احتیاج به اینترنت داره...


2- Google Map API: که در واقع نقشه رو به صورت مستقیم به شکل html میده:

اگر می خواید نقشه رو مستقیم تو برنامه تون داشته باشید کار سخت تر میشه:

با وی بی 6 هم باید از WebBrowser استفاده کنید تا این صفحات html رو لود کنه توی برنامه تون

آموزش صفحات html اینجاست:
http://www.w3schools.com/googleapi/google_maps_overlays.asp

اینم نمونش:
http://www.w3schools.com/googleapi/tryit.asp?filename=tryhtml_map_overlays_infowindow

سورس برنامه رو هم گذاشتم...

تو ویندوز 10 از کد زیر استفاده کردم تا IE11 ست بشه و اطلاعات داخل وب برازر به درستی نمایش بده:
http://barnamenevis.org/showthread.php?503045-%D9%85%D8%B4%DA%A9%D9%84-%D8%AF%D8%B1-%D8%A8%D8%A7%D8%B2-%DA%A9%D8%B1%D8%AF%D9%86-%D8%B3%D8%A7%DB%8C%D8%AA-%D8%A8%D8%A7-webbrowser&p=2246337&viewfull=1#post2246337

niko2008
دوشنبه 18 آبان 1394, 06:55 صبح
دوست من خیلی عالی بود فقط برای نشان دادن چند جا چکار باید کرد؟

meys34
دوشنبه 18 آبان 1394, 13:50 عصر
سلام

تو همون سایت امکانش بود:


http://maps.googleapis.com/maps/api/staticmap?center=tehran&zoom=12&scale=false&size=600x300&maptype=roadmap&format=png&visual_refresh=true&markers=size:mid%7Ccolor:0xff0000%7Clabel:1%7Ctehr an&markers=size:mid%7Ccolor:0xff0000%7Clabel:2%7Ctehr an,azadi+sq&markers=size:mid%7Ccolor:0xff0000%7Clabel:1%7Cmehr abad+airport&markers=size:mid%7Ccolor:0xff0000%7Clabel:3%7Ctehr an,+enghelab+sq



136585

136586

niko2008
دوشنبه 18 آبان 1394, 15:40 عصر
دوست خوبم من اینارو دیدم فقط کدهای vb رو میخواهم که تو برنامه هام استفاده کنم؟

meys34
پنج شنبه 21 آبان 1394, 11:23 صبح
سلام

اگر حالت اول رو بخوایم میشه این:

WebBrowser1.Silent = True
If WebBrowser1.Document Is Nothing Then WebBrowser1.GoHome

Dim Marker As String, i As Integer

For i = 1 To List1.ListCount

Marker = Marker & "markers=size:mid%7Ccolor:0xff0000%7Clabel:" & CStr(i) & "%7C" & Replace$(List1.List(i - 1), " ", "+") & "&"

Next

Marker = Mid$(Marker, 1, Len(Marker) - 1)

WebBrowser1.Document.Clear
WebBrowser1.Document.write _
"<img src='http://maps.googleapis.com/maps/api/staticmap?center=" & Text1.Text & _
"&zoom=" & Text2.Text & _
"&scale=false&size=600x300&maptype=" & Combo1.Text & _
"&format=png&visual_refresh=true&" & Marker & "'>"
WebBrowser1.Document.Close

niko2008
پنج شنبه 21 آبان 1394, 21:46 عصر
دوست خوبم واقعا ببخشید بجای نام برای جستجو اگر از Lat و Long استفاده کنیم چکار باید کرد؟

meys34
جمعه 22 آبان 1394, 16:19 عصر
سلام

فرقی نداره که اسم مکان رو بزارید یا آدرس رو...

همه این موارد صحیح هستند:


35.699129, 51.338081

35° 41' 56.8644'' N,51° 20' 17.0916'' E

35° 41' 56.8644'' N 51° 20' 17.0916'' E

N 35° 41' 56.8644'', E 51° 20' 17.0916''

Tehran ,Azadi sq.


برای حالت دوم (بالا توضیح دادم) رو هم میزام... به زودی...

niko2008
جمعه 22 آبان 1394, 20:40 عصر
ببخشيد منظور من اينه که من يه lat lng اصلی دارم که اون هم مربوط وابسته به 5یا n تا lat lng فرضیه حالا ميخوام lat lng اصلی رو آبی رنگ و فرعی های مربوط به اون رو فرمز رنگ نشان بده

واقعا واقعا از لطف و نظرتون متشکرم

meys34
شنبه 23 آبان 1394, 18:51 عصر
سلام

توی این خط:

Marker = Marker & "markers=size:mid%7Ccolor:0xff0000%7Clabel:" & CStr(i) & "%7C" & Replace$(List1.List(i - 1), " ", "+") & "&"


عبارت color:0xff0000 نشانگر رنگ مارکر هست...

قرمز=color:0xff0000

آبی=color:0x0000ff


توی سورس زیر انتخاب رنگ هم اضافه کردم...


تغییراتی که میخواید رو خودتون اضافه کنید...

niko2008
شنبه 23 آبان 1394, 22:03 عصر
واقعا عالی بود فقط چطوری میتونم نقشه رو جابجا کنم یعنی ثابت نباشه؟ مثل google maps

meys34
دوشنبه 25 آبان 1394, 12:56 عصر
برای حالت دوم (بالا توضیح دادم) رو هم میزام... به زودی...

سلام

این هم بخش پایانی...

روش خیلی کار کردم...

دکمه های AddMarker مستقیم مارکر اضافه میکنه و نیازی به رفرش نیست...

همینطور تغییر نوع نقشه...

نیازی به فایل جانبی هم نداره...


روش رفع مشکل تو ویندوز 10 هم توی پست 2 توضیح دادم...




136834

niko2008
چهارشنبه 27 آبان 1394, 09:52 صبح
دوست خوبم میتونین این سورس جدید رو در refresh map واسم ترجمه کنید؟

meys34
چهارشنبه 27 آبان 1394, 14:15 عصر
سلام

روش کار به این صورت هست که ابتدا یه صفحه html طراحی میکنیم که نقشه گوگل رو نشون بده...

کل اون html رو ریختم توی تکست 4 ... برای اینکه دیده بشه باید فرمتون رو بزرگ کنید...



<!DOCTYPE html>
<html>
<head>
<script
src="http://maps.googleapis.com/maps/api/js">
</script>

<script>
var map; // global variable
var geocoder;
var markers = [];

function initialize() {
var mapOptions = {
zoom: 5,
mapTypeId: ****};

// assigning to global variable:
map = new google.maps.Map(document.getElementById("googleMap"),mapOptions);

map.setZoom(***);

getAddress('**',function returnGeo(Geo){
map.setCenter(Geo);});

*
}

function getAddress(address,CallBack){
geocoder = new google.maps.Geocoder();
geocoder.geocode({'address': address}, function (results, status) {
if (status == google.maps.GeocoderStatus.OK) {
CallBack(results[0].geometry.location);
}
});
}

function AddMarker(mark,number,color){

if (color==undefined){var color='FE7569';}

var marker = new google.maps.Marker({
icon:'http://chart.apis.google.com/chart?chst=d_map_pin_letter&chld=' + number +'|'+color,
map: map
});
getAddress(mark,function returnGeo(Geo){
marker.setPosition(Geo);markers.push(marker);});
}

function DeleteMarkers() {
//Loop through all the markers and remove
for (var i = 0; i < markers.length; i++) {
markers[i].setMap(null);
}
markers = [];
};

google.maps.event.addDomListener(window, 'load', initialize);
</script>
</head>

<body>
<div id="googleMap" style="position:absolute;top:10px;right:10px;bottom:10px; left:10px;"></div>
</body>
</html>

موقع فرم لود و هم توی دکمه refresh این html رو میریزم توی webbrowser که نمایش بده...


نکته:
فقط برای راحتی کار چند جا علامت * قرار دادم که با تابع replace بتونم تنظیمات رو از توی فرم به html اضافه کنم...

می شد این کار رو توسط توابع جاوا اسکریپت هم انجام بدم ولی اینجوری راحت تر بود...



در پایان:
برای راحتی کار توابع دلخواه رو به html اضافه کردم...

لیست توابع:

DeleteMarkers()
AddMarker(mark,number,color)
getAddress(address,CallBack)


علاوه بر این خود GOOGLE MAP هم یه سری توابع داره که در صورت لزوم می تونید استفاده کنید...

map.setMapTypeId(mapType)
map.setCenter(location)
map.setZoom(ZoomLevel)



شناخت html و javascript در این روش مورد نیاز هست...

با این حال هر بخشی که خواستید رو بگید بیشتر توضیح بدم...

niko2008
چهارشنبه 27 آبان 1394, 20:15 عصر
دوست عزیز
یه روش راحت تر برای نوشتن کدها نیست؟ یعنی مثل سورس استفاده شده در http://barnamenevis.org/images/attach/zip.gifGoogleMapMaker1.zip‏ (http://barnamenevis.org/attachment.php?attachmentid=136679&d=1447316529)

واقعا نمیدونم ترجمه این کد جدید برام نامانوسه

sourcecode
چهارشنبه 27 آبان 1394, 23:21 عصر
ببخشید منم دارم همین google map رو برای پروژم به صورت خیلی جزیی تر که نقشه چند شهر ایران رو پوشش میده طراحی میکنم اونم با Qt و C++ بدون استفاده از Api و... اگه کسی اطلاعاتی در این زمینه داره ممنون میشم کمکم کنه چون واقعا به کمک نیاز دارم
باتشکر:بوس:

niko2008
شنبه 30 آبان 1394, 20:38 عصر
دوست خوبم میتونید فرق بین کدهای html و javascript رو توضیح دهید؟ و کدوم یکی راحتره؟
وی منبع از لیست کدهایشان رو معرفی کنید؟

meys34
یک شنبه 01 آذر 1394, 12:00 عصر
سلام

بحث مفصلی هست هرکدوم یه زبان برنامه نویسی حساب میشه که معمولا در کنار هم هستند...
html مربوط به اشیای داخل نمایش صفحه و javascript مربوط به دستورات برنامه نویسی داخل اون صفحه است...


برنامه کنونی فقط یه بخش کوچکی از html داره و بقیه اش javascript هست...

پیشنهاد میکنم سایت زیر رو سر بزنید و تغییرات رو توی سورس اش بدید و مستقیم مشاهده کنید
http://www.w3schools.com/googleapi/tryit.asp?filename=tryhtml_map_overlays_infowindow

niko2008
یک شنبه 01 آذر 1394, 21:37 عصر
دوست عزیز واقعا ممنوم از لطف و نظرتون
یه سوال چطوری میتوان به مارکهای روی نقشه لبیل مثل hello word اضافه کرد ولی در سورس کد اولی باشه بهتره

meys34
سه شنبه 03 آذر 1394, 14:08 عصر
سلام

توی حالت اول اینجوری میشه...



http://maps.googleapis.com/maps/api/staticmap?center=Tehran&zoom=12&scale=false&size=600x300&maptype=roadmap&format=png&visual_refresh=true&markers=icon:http://chart.apis.google.com/chart?chst=d_bubble_text_small%26chld=bb%257C123+4 56%257CFFFF88%257C000000|Tehran,+Azadi+sq


متاسفانه مشکل اینجاست که بیشتر از 6 یا 7 کاراکتر نمیشه بهش اضافه کرد





کد این قسمت رو اینجوری عوض کنید:
On Error Resume Next
Marker = Marker & "markers=icon:http://chart.googleapis.com/chart?chst=d_bubble_text_small%26chld=bb%257c" & Mid$(List1.List(i - 1), 1, 7) & "%257c" & BGR2RGB(Picture1.BackColor) & "%7C" & Replace$(List1.List(i - 1), " ", "+") & "&" '"markers=size:mid%7Ccolor:0x" & BGR2RGB(Picture1.BackColor) & "%7Clabel:" & CStr(i) & "%7C" & Replace$(List1.List(i - 1), " ", "+") & "&"
On Error GoTo 0

niko2008
پنج شنبه 05 آذر 1394, 16:17 عصر
دوست من ببخشید میتونیم به جای & BGR2RGB(Picture1.BackColor) & خودمان یک رنگ ثابت بدیم چون من هر کاری کردم error داد؟

meys34
پنج شنبه 05 آذر 1394, 19:54 عصر
سلام

قبلا در مورد رنگ توضیح داده بودم...


رنگ زرد:

On Error Resume Next
Marker = Marker & "markers=icon:http://chart.googleapis.com/chart?chst=d_bubble_text_small%26chld=bb%257c" & Mid$(List1.List(i - 1), 1, 7) & "%257cFFFF00%7C" & Replace$(List1.List(i - 1), " ", "+") & "&"
On Error GoTo 0

ایلیا آخوندزاده
جمعه 06 آذر 1394, 21:22 عصر
دوست من ببخشید میتونیم به جای & BGR2RGB(Picture1.BackColor) & خودمان یک رنگ ثابت بدیم چون من هر کاری کردم error داد؟

کافیه کد هگزادسیمال رنگ رو جایگزین کنید .

mona1990
پنج شنبه 02 اردیبهشت 1395, 03:52 صبح
سلام دوستان.کسی هست که بتونه راهنماییم کنه؟
من آدرس سایت و مکانمو در Google Map Maker ثبت کردم ولی در Google Map نشون نمیده.چیکار میتونم بکنم که مکانمو تو Google Map نشون بده؟

www.pc3enter.tk
پنج شنبه 02 اردیبهشت 1395, 20:25 عصر
درخواست خصوصی بده ببینم چه طور میتوانم کمکت کنم