Skip to content

Hiring web developer to create a WordPress map plugin

Project scope: display building data as pins on Google Maps and allow users to filter by specific criteria (year built, number of floors, etc). Example of projects, currently made with WP Go Maps plugin:

If I contact web developers asking for a quote to code “a plugin like WP Go Maps but with with category/legend like ZeeMaps and loading speed like Mapifator“, they may not what are these 3 software and ignore me. I probably need to list ALL required features without comparing with existing software, but this is risky to omit features, for example I say that I want Google Maps integration and he omit streetview because I haven’t told him specifically to include also streetview.

Some developers may think that I am a chain of restaurants needing to show locations, then realize that my project is unique and far more complex that anything he done before, he may start coding in non-optimal way or give up, will hire in his turn another more experienced web developer which will increase costs and if there is something that I want to change later, he may not be able to help me because is not the person who code it.

So, I need a developer able to understand project scope and propose BEST solution without having to explain requirements in detail, and revise code later to add new features if suggested by my visitors, this without charging too much since this is a voluntary project made for community and save lives in case of earthquake.

Developers interested please explain:

  • How I will import data?
  • How will be data stored to be loaded on map?
  • How will filters work while loading only 3 fields at initial stage (name, icon, coordinates)?

All visitors are welcome to provide additional ideas to make website/map easier to use!

Software used in the past – get inspired from them and offer a better solution

In August 2017 someone told me about Google Fusion Tables, a FREE experimental application that provided only 9 colors of colored dots, as well as other icons representing various objects, no filtering features. Google announced closure of Fusion Tables on 3 December 2019.

In October 2019 I moved to ZeeMaps, a paid service ($20/month) that provide 31 categories / colors to choose from, and ability to filter and display only pins of specific criteria.

ZeeMap was not mobile-friendly and full of bugs and didn’t received any new feature since 2019. During 2022, for 2 weeks mobile devices were not displaying markers. Lots of people disturbed me with messages asking info for certain building, because the map was too hard to navigate on phones.

ZeeMaps had option to display markers as images, or SVG markers that include 3 first characters of marker name inside marker circle. Some people did not understood this and reported “wrong label” on buildings having name/number longer than 3 characters. There was no option to change to SVG with label at certain zoom and showing more than 2000 SVG markers on viewport caused browser to crash, so had to activate clustering when using SVG markers.

ZeeMaps interface: horizonal legend at bottom with checkboxes to show/hide categories/colors. They were buggy / not working on maps with more than 7500 pins (without cluster) or 20.000 pins (with cluster), and not displayed on mobile devices.
Blocuri colorate dupa anul constructiei

Video: how filters work in ZeeMaps

https://mapifator.com/ is another service that I came across, but ridiculous expensive considering that display only OpenStreetMap which is a BIG NO for me, I need Google satellite photos. Mapifator allow me to create categories with different icon sizes and any HEX color.

Mapifator have option to display full-length name above marker, but lacks option to set zoom level at which marker labels are displayed (they are displayed on all zoom levels where markers are not clustered). I tested here https://www.hartablocuri.ro/mapifator/

Mapifator interface: extremely simple, a single search box, displaying markers that contains a text string in any of the fields, search is instant and display results in a second even with 40.000 markers (can you check the secret behind this?).
Harta interactiva Google Fusion Tables

In 2022 I started looking for WordPress plugins, and bought https://www.wpgmaps.com/ ($40), a quite complex plugin with lots of features compared with ZeeMaps and Mapifator. Such complex plugin also had bugs, which I reported and their developers fixed them (great support!). WP Go Maps is mobile-friendly and reduced number of people contacting me unnecessarily to ask for building info.

Some people complained that cannot recognize location of a building with certain name/number will have to click multiple buildings to find right one, because WP Go Maps do not show labels above markers as ZeeMaps do.

The worst thing of WP Go Maps is that all marker details are stored on my server and loaded each time someone visit website, 40.000 markers takes few minutes to load. I had to make separate maps for each county of Romania, but Bucharest alone have 15.000 buildings causing a huge load on server. It became a problem after Turkey earthquake of 6th February 2023 and Romania earthquake of 14 February 2023. A panic started in Romania, people curious about earthquake risks or building age to insure their apartments, came to my website to get info. For few days website traffic increased 10 times, server could not provide marker data to some visitors, website give 503 error, frustrated visitors will refresh website repeatedly causing even more load on server. This happen every time someone promote my website on Facebook or in mass-media and traffic exceed few hundreds visitors/hour.

WP Go Maps offer ability to filter markers containing text strings (there is no range filter), the filter boxes are instant (don’t need to press enter) so a single person writing a 10-letter word in filter box, make 10 requests to server and get frustrated waiting for map to re-load.

WP Go Maps interface: checkboxes to show/hide categories, but without icons/colors. WP Go Maps have also an option to show icons/colors legend, but without checkboxes. The search box at bottom of map does not just move map to location, but also re-load only markers within 1 km radius (takes few seconds = un-user friendly).
Harta interactiva ZeeMaps

The IDEAL interface in my opinion: a button on upper-left corner of map which open a side panel with search location (zoom and center map on city or street like in Google Maps without re-loading markers), color legend and filter boxes.
Harta interactiva ZeeMaps

Developers please explain: how will be data stored and displayed on map?

https://www.easymapmaker.com/pricing have plans ranging from $29/month for 1,500 markers, to $99/month with limit to 30,000 markers.

ZeeMaps CAN hold over 1 million markers without crashing browser, proof: https://www.zeemaps.com/map?group=4278592 (I got a database with 1,014,463 street addresses and GPS coordinates from Romania and created this map without any practical use, just to SHAME competitors who limit number of markers on map. It took 1 hour to import data in batches of ~80,000, and now takes 2 minutes to get first markers loaded and another 1 minute to load all markers. Video proof that it works https://www.youtube.com/watch?v=RJ1VS0h0BdI

ZeeMaps have option to import data from Google Sheets every 5 hours. It does detect and import only rows that have been changed, then delete rows no longer found on Google Sheets. Impressive!

Mapifator does not have option of automatic updating, I need to import CSV or Excel and is amazing fast: 100,000 markers are imported a minute, and they are loaded in ~10 seconds.

Updating maps on WP Go Maps is a headache. It does have option of re-importing hourly, daily, weekly, but it does re-import all markers even if none has changed, overloading server. Data is stored in MySQL and imported in batches of 100 markers, first 1000 markers are imported in 2 minutes then it slow down, after 1 hour it reach marker 10,000 if it didn’t timeout (I get timeout at random so I need to check what was last marker uploaded, delete until it and start importing again). Deleting markers for update is also a headache, only 5000 markers can be deleted at time.

Sorin told me that can store data in a CSV file on server, without importing in MySQL, I only need to upload a new CSV and map will be updated in realtime, without going through importing process. Is this possible?

I would like markers to be PNG images like WP Go Maps. Sorin advised me that markers should be generated via SVG based on indicated size and HEX color. Most map software o

Mapifator does this, If I activate SVG markers with label above, clustering at zoom 12, go on https://www.hartablocuri.ro/mapifator/ and zoom to central Bucharest, over 2000 markers will appear on viewport on 1920×1080 screen, browser start lagging and clustering is necessary. If you have 3840×2160 screen (or reduce browser scale to 25-50%) you may be able to zoom out to entire Bucharest before clustering starts, and browser will CRASH once 5000-10000 SVG markers are on viewport.

WP Go Maps markers use image icons, https://www.hartablocuri.ro/en/ browser does not crash even with over 50.000 PNG markers loaded and no clustering.

WP Go Maps allow me to create unlimited categories, set icon as image by category, but also able to set icons individually for all markers. ZeeMaps offer 31 predefined colors to choose from, so I created a map coloring buildings by 15 colors indicating construction years and another map coloring buildings according the 10 earthquake risk classes, when I moved to WP Go Maps I created ~120 icons, 15 colors indicating construction years, each one in 10 variants of text indicating earthquake risk class.

Sorin: web developer who half-made a plugin and disappeared

In March 2023 Sorin, a web developer that previously worked in earthquake-related applications, impressed by how much I worked voluntarily to make a database of buildings in Romania, and the poor performance of WP Go Maps, offered to help me FREE OF CHARGE.

He initially modified WP Go Maps to make it using Google Maps without having to pay credits to Google, then wanted to make map loading only coordinates, marker icon and title, while the rest of details load ONLY when you click each marker, but said that this plugin have a lot of junk code so is better to make own code from scratch, and gave me ETA 1 month.

Contrary of WP Go Maps which have an import feature that takes HOURS to import data from Excel in MySQL to be displayed on map (which makes updating process a headache), Sorin said that will make a plugin that will read a CSV file stored on server, without importing in MySQL, anytime I want to update map I just need to replace CSV and data on map will be changed on realtime. 

During May 2023 Sorin also helped me with ideas to improve visual look of my website. Since June I became worried whenever he is still working at map plugin, I offered him to show his name in list of collaborators, but he rejected saying that don’t want advertising, I offered him money, he said that don’t need money… only on 30 July he gave me link to his website where he installed plugin for testing, and I recorded a video: https://www.youtube.com/watch?v=8Hvwo4X4kd4 (I like the start, but looks less than 50% finished). I did not understood what solution he would had filters without loading building details from start, as I see in video he did loaded data that created filter for. 6 months passed and he still did NOT FINISHED MY PLUGIN. On 28 August 2023 we meet for 1st time, had a drink together and walked through city for 4 hours, time in which I asked him new ETA for map plugin, but he refused to answer. I got multiple calls from a 19-year old girl asking me where I am, Sorin asked who is the bitch, we talked about bad experiences with girls we both had, then he said that our collaboration is OVER and blocked me on Facebook.

Wanted features: back-end

Create/manage maps with shortcodes to embed in posts. Shortcodes to contain map ID, latitude, longitude, zoom (like WP Go Maps) but also map width/height (WP Go Maps can set width/height from map setting, not from shortcode).

Import markers from CSV or Google Sheets (detect columns Title, Latitude, Longitude, Icon), generate rest of data fields automatically based on column headers / first row on sheet (ideally like ZeeMaps with fields individual for each map, not like WP Go Maps where fields are the same for all maps).

Export feature or option to edit markers data directly on website (found on most software) is NOT necessary in my case.

Choose a filter for each field: exact match, contains, number range.

If is possible to show labels above markers (like Mapifator) please add option to choose zoom level (14-15) at which display marker labels.

Wanted features: front-end

Info window covering 80% of left side of screen on mobile devices, and 25% or 360 pixels on desktop (like WP Go Maps and Mapifator, unlike ZeeMaps where info window open above marker and cause map accidentally scrolling upwards and you need to close info window to be able to click another marker above).

Close info window by clicking arrow on right side, or by clicking anywhere on map, or by phone’s Back button (mobile users have instinct tap Back to close info window, accidentally leaving website, on all ZeeMaps, Mapifator, WP Go Maps).

Highlight active marker by doubling its size or animation (like Mapifator).

For search/filtering I am not sure which is the best idea, so I want to hear YOUR proposal. What I am thinking: a button on upper-left corner of map which open a search panel of same width like info window, containing a box to search location (zoom and center map on city or street like in Google Maps) and below it legend of categories/tags with checkboxes to show/hide specific categories, and boxes to filter by fields added by me (filter filter by text strings and greater/lower than # for construction year and number of floors).

Unwanted features

All map software have option to add markers manually and edit them directly on map, and export marker data. It may sound surprising, but I don’t need such feature. Because I sell data in Excel format (with few more fields not public on map) and any edit I do directly on map will be not reflected in Excel. When I add buildings on map I don’t want to add one by one, I usually copy-paste all details on multiple identical buildings (video how I add data)

ZeeMaps and WP Go Maps allow me to add geometric shapes on map. I don’t need this.

Someone suggested to allow anyone to add/edit markers. I rejected idea, because most people are not skilled to add building details correctly, and is risky to ruin my existing data. What would be useful is option to suggest changes and get alerted so I can edit in my database (don’t know how could be implemented).

Someone suggested making map available via paid subscription. I rejected idea, because only of handful of real estate agents will pay subscription, and the regular people will lose access to TRUE information, when real estate agents lying that property is newer than it actually is. A better solution is to allow a limited number of clicks on buildings per day and pay subscription for unlimited access. But project may become too complex if I were to add payment gateway for subscription.

Someone suggested making a real estate classifieds website, where people can post properties for sale. I rejected idea, I only want to provide information about buildings. A classifieds website would be a very complex project, and what about landed houses or commercial spaces that are not in the apartment buildings added by me on map?

Wanted security

In January 2022 a programmer informed me that inspecting element in ZeeMaps is possible to download a JSON file with marker IDs then write a script to scrape details from each marker ID. I hoped that a self-hosted WordPress plugin will be more secure, but actually WP Go Maps was less secure: any noob without programming knowledge can use Inspect Element to download a JSON file with all marker details.

So, to improve website loading speed and improve security, I need a solution to load ONLY marker icon, name and coordinates, the rest of details to be loaded marker by marker once users click them. This will also make my data more secure: visitors will no longer able to download all data using inspect element, must write a script to scrape data, and to prevent this too, I would like to display a CAPTCHA if someone access more than 20 markers in 1 minute (this because I worked few hundreds hours to gather all building data and I want to offer it as paid download to people who need data in bulk).

I am not enough experienced in programming to imagine how marker details will be stored in database to work as mentioned above. I talked with WP Go Maps support since 2022, and after having bad experience with Sorin in 2023, they replied me that is technically NOT possible to pre-load only icon, name and coordinates, and have filters for other data fields that will be loaded only when someone click each building. The data fields must be pre-loaded so filters can work. DAMN! Then what is the solution?

Leave a comment

Your email address will not be published. Required fields are marked *